Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: auth.py

Issue 1075723002: Extract authentication options handling into a separate function. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « apply_issue.py ('k') | commit_queue.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """Authentication related functions."""
6
7 import collections
8 import optparse
9
10
11 # Authentication configuration extracted from command line options.
12 # See doc string for 'make_auth_config' for meaning of fields.
13 AuthConfig = collections.namedtuple('AuthConfig', [
14 'use_oauth2', # deprecated, will be always True
15 'save_cookies', # deprecated, will be removed
16 'use_local_webserver',
17 'webserver_port',
18 ])
19
20
21 def make_auth_config(
22 use_oauth2=None,
23 save_cookies=None,
24 use_local_webserver=None,
25 webserver_port=None):
26 """Returns new instance of AuthConfig.
27
28 If some config option is None, it will be set to a reasonable default value.
29 This function also acts as an authoritative place for default values of
30 corresponding command line options.
31 """
32 default = lambda val, d: val if val is not None else d
33 return AuthConfig(
34 default(use_oauth2, False),
35 default(save_cookies, True),
36 default(use_local_webserver, True),
37 default(webserver_port, 8090))
38
39
40 def add_auth_options(parser):
41 """Appends OAuth related options to OptionParser."""
42 default_config = make_auth_config()
43 parser.auth_group = optparse.OptionGroup(parser, 'Auth options')
44 parser.auth_group.add_option(
45 '--oauth2',
46 action='store_true',
47 dest='use_oauth2',
48 default=default_config.use_oauth2,
49 help='Use OAuth 2.0 instead of a password.')
50 parser.auth_group.add_option(
51 '--no-oauth2',
52 action='store_false',
53 dest='use_oauth2',
54 default=default_config.use_oauth2,
55 help='Use password instead of OAuth 2.0.')
56 parser.auth_group.add_option(
57 '--no-cookies',
58 action='store_false',
59 dest='save_cookies',
60 default=default_config.save_cookies,
61 help='Do not save authentication cookies to local disk.')
62 parser.auth_group.add_option(
63 '--auth-no-local-webserver',
64 action='store_false',
65 dest='use_local_webserver',
66 default=default_config.use_local_webserver,
67 help='Do not run a local web server when performing OAuth2 login flow.')
68 parser.auth_group.add_option(
69 '--auth-host-port',
70 type=int,
71 default=default_config.webserver_port,
72 help='Port a local web server should listen on. Used only if '
73 '--auth-no-local-webserver is not set. [default: %default]')
74 parser.add_option_group(parser.auth_group)
75
76
77 def extract_auth_config_from_options(options):
78 """Given OptionParser parsed options, extracts AuthConfig from it.
79
80 OptionParser should be populated with auth options by 'add_auth_options'.
81 """
82 return make_auth_config(
83 use_oauth2=options.use_oauth2,
84 save_cookies=False if options.use_oauth2 else options.save_cookies,
85 use_local_webserver=options.use_local_webserver,
86 webserver_port=options.auth_host_port)
87
88
89 def auth_config_to_command_options(auth_config):
90 """AuthConfig -> list of strings with command line options."""
91 if not auth_config:
92 return []
93 opts = ['--oauth2' if auth_config.use_oauth2 else '--no-oauth2']
94 if not auth_config.save_cookies:
95 opts.append('--no-cookies')
96 if not auth_config.use_local_webserver:
97 opts.append('--auth-no-local-webserver')
98 opts.extend(['--auth-host-port', str(auth_config.webserver_port)])
99 return opts
OLDNEW
« no previous file with comments | « apply_issue.py ('k') | commit_queue.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698