| Index: third_party/gsutil/oauth2_plugin/oauth2_helper.py
|
| diff --git a/third_party/gsutil/oauth2_plugin/oauth2_helper.py b/third_party/gsutil/oauth2_plugin/oauth2_helper.py
|
| deleted file mode 100644
|
| index 585b50403351ad785a902fa91bf54e0474f5e68a..0000000000000000000000000000000000000000
|
| --- a/third_party/gsutil/oauth2_plugin/oauth2_helper.py
|
| +++ /dev/null
|
| @@ -1,103 +0,0 @@
|
| -# Copyright 2011 Google Inc. All Rights Reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -
|
| -"""Helper routines to facilitate use of oauth2_client in gsutil."""
|
| -
|
| -import sys
|
| -import time
|
| -import webbrowser
|
| -
|
| -import oauth2_client
|
| -
|
| -GSUTIL_CLIENT_ID = '909320924072.apps.googleusercontent.com'
|
| -# Google OAuth2 clients always have a secret, even if the client is an installed
|
| -# application/utility such as gsutil. Of course, in such cases the "secret" is
|
| -# actually publicly known; security depends entirly on the secrecy of refresh
|
| -# tokens, which effectively become bearer tokens.
|
| -GSUTIL_CLIENT_NOTSOSECRET = 'p3RlpR10xMFh9ZXBS/ZNLYUu'
|
| -
|
| -GOOGLE_OAUTH2_PROVIDER_LABEL = 'Google'
|
| -GOOGLE_OAUTH2_PROVIDER_AUTHORIZATION_URI = (
|
| - 'https://accounts.google.com/o/oauth2/auth')
|
| -GOOGLE_OAUTH2_PROVIDER_TOKEN_URI = (
|
| - 'https://accounts.google.com/o/oauth2/token')
|
| -
|
| -OOB_REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
|
| -
|
| -def OAuth2ClientFromBotoConfig(config):
|
| - token_cache = None
|
| - token_cache_type = config.get('OAuth2', 'token_cache', 'file_system')
|
| -
|
| - if token_cache_type == 'file_system':
|
| - if config.has_option('OAuth2', 'token_cache_path_pattern'):
|
| - token_cache = oauth2_client.FileSystemTokenCache(
|
| - path_pattern=config.get('OAuth2', 'token_cache_path_pattern'))
|
| - else:
|
| - token_cache = oauth2_client.FileSystemTokenCache()
|
| - elif token_cache_type == 'in_memory':
|
| - token_cache = oauth2_client.InMemoryTokenCache()
|
| - else:
|
| - raise Exception(
|
| - "Invalid value for config option OAuth2/token_cache: %s" %
|
| - token_cache_type)
|
| -
|
| - proxy = None
|
| - if (config.has_option('Boto', 'proxy')
|
| - and config.has_option('Boto', 'proxy_port')):
|
| - proxy = "%s:%s" % (config.get('Boto', 'proxy'),
|
| - config.get('Boto', 'proxy_port'))
|
| -
|
| - provider_label = config.get(
|
| - 'OAuth2', 'provider_label', GOOGLE_OAUTH2_PROVIDER_LABEL)
|
| - provider_authorization_uri = config.get(
|
| - 'OAuth2', 'provider_authorization_uri',
|
| - GOOGLE_OAUTH2_PROVIDER_AUTHORIZATION_URI)
|
| - provider_token_uri = config.get(
|
| - 'OAuth2', 'provider_token_uri', GOOGLE_OAUTH2_PROVIDER_TOKEN_URI)
|
| -
|
| - client_id = config.get('OAuth2', 'client_id', GSUTIL_CLIENT_ID)
|
| - client_secret = config.get(
|
| - 'OAuth2', 'client_secret', GSUTIL_CLIENT_NOTSOSECRET)
|
| -
|
| - return oauth2_client.OAuth2Client(
|
| - oauth2_client.OAuth2Provider(
|
| - provider_label, provider_authorization_uri, provider_token_uri),
|
| - client_id, client_secret,
|
| - proxy=proxy, access_token_cache=token_cache)
|
| -
|
| -def OAuth2ApprovalFlow(oauth2_client, scopes, launch_browser=False):
|
| - approval_url = oauth2_client.GetAuthorizationUri(OOB_REDIRECT_URI, scopes)
|
| - if launch_browser:
|
| - sys.stdout.write(
|
| - 'Attempting to launch a browser with the OAuth2 approval dialog at '
|
| - 'URL: %s\n\n'
|
| - '[Note: due to a Python bug, you may see a spurious error message "object is not\n'
|
| - 'callable [...] in [...] Popen.__del__" which can be ignored.]\n\n' % approval_url)
|
| - else:
|
| - sys.stdout.write(
|
| - 'Please navigate your browser to the following URL:\n%s\n\n' %
|
| - approval_url)
|
| -
|
| - if (launch_browser and
|
| - not webbrowser.open(approval_url, new=1, autoraise=True)):
|
| - sys.stdout.write(
|
| - 'Launching browser appears to have failed; please navigate a browser '
|
| - 'to the following URL:\n%s\n' % approval_url)
|
| - code = raw_input('Enter the authorization code: ')
|
| -
|
| - refresh_token, access_token = oauth2_client.ExchangeAuthorizationCode(
|
| - code, OOB_REDIRECT_URI, scopes)
|
| -
|
| - return refresh_token
|
| -
|
|
|