Index: tools/telemetry/third_party/gsutil/third_party/oauth2client/oauth2client/clientsecrets.py |
diff --git a/tools/telemetry/third_party/gsutil/third_party/oauth2client/oauth2client/clientsecrets.py b/tools/telemetry/third_party/gsutil/third_party/oauth2client/oauth2client/clientsecrets.py |
deleted file mode 100644 |
index 08a17020d1d9f10bdfd3ddb352b4fc539a6ad54c..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/gsutil/third_party/oauth2client/oauth2client/clientsecrets.py |
+++ /dev/null |
@@ -1,163 +0,0 @@ |
-# Copyright 2014 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. |
- |
-"""Utilities for reading OAuth 2.0 client secret files. |
- |
-A client_secrets.json file contains all the information needed to interact with |
-an OAuth 2.0 protected service. |
-""" |
- |
-__author__ = 'jcgregorio@google.com (Joe Gregorio)' |
- |
-import json |
-import six |
- |
- |
-# Properties that make a client_secrets.json file valid. |
-TYPE_WEB = 'web' |
-TYPE_INSTALLED = 'installed' |
- |
-VALID_CLIENT = { |
- TYPE_WEB: { |
- 'required': [ |
- 'client_id', |
- 'client_secret', |
- 'redirect_uris', |
- 'auth_uri', |
- 'token_uri', |
- ], |
- 'string': [ |
- 'client_id', |
- 'client_secret', |
- ], |
- }, |
- TYPE_INSTALLED: { |
- 'required': [ |
- 'client_id', |
- 'client_secret', |
- 'redirect_uris', |
- 'auth_uri', |
- 'token_uri', |
- ], |
- 'string': [ |
- 'client_id', |
- 'client_secret', |
- ], |
- }, |
-} |
- |
- |
-class Error(Exception): |
- """Base error for this module.""" |
- pass |
- |
- |
-class InvalidClientSecretsError(Error): |
- """Format of ClientSecrets file is invalid.""" |
- pass |
- |
- |
-def _validate_clientsecrets(obj): |
- _INVALID_FILE_FORMAT_MSG = ( |
- 'Invalid file format. See ' |
- 'https://developers.google.com/api-client-library/' |
- 'python/guide/aaa_client_secrets') |
- |
- if obj is None: |
- raise InvalidClientSecretsError(_INVALID_FILE_FORMAT_MSG) |
- if len(obj) != 1: |
- raise InvalidClientSecretsError( |
- _INVALID_FILE_FORMAT_MSG + ' ' |
- 'Expected a JSON object with a single property for a "web" or ' |
- '"installed" application') |
- client_type = tuple(obj)[0] |
- if client_type not in VALID_CLIENT: |
- raise InvalidClientSecretsError('Unknown client type: %s.' % (client_type,)) |
- client_info = obj[client_type] |
- for prop_name in VALID_CLIENT[client_type]['required']: |
- if prop_name not in client_info: |
- raise InvalidClientSecretsError( |
- 'Missing property "%s" in a client type of "%s".' % (prop_name, |
- client_type)) |
- for prop_name in VALID_CLIENT[client_type]['string']: |
- if client_info[prop_name].startswith('[['): |
- raise InvalidClientSecretsError( |
- 'Property "%s" is not configured.' % prop_name) |
- return client_type, client_info |
- |
- |
-def load(fp): |
- obj = json.load(fp) |
- return _validate_clientsecrets(obj) |
- |
- |
-def loads(s): |
- obj = json.loads(s) |
- return _validate_clientsecrets(obj) |
- |
- |
-def _loadfile(filename): |
- try: |
- with open(filename, 'r') as fp: |
- obj = json.load(fp) |
- except IOError: |
- raise InvalidClientSecretsError('File not found: "%s"' % filename) |
- return _validate_clientsecrets(obj) |
- |
- |
-def loadfile(filename, cache=None): |
- """Loading of client_secrets JSON file, optionally backed by a cache. |
- |
- Typical cache storage would be App Engine memcache service, |
- but you can pass in any other cache client that implements |
- these methods: |
- |
- * ``get(key, namespace=ns)`` |
- * ``set(key, value, namespace=ns)`` |
- |
- Usage:: |
- |
- # without caching |
- client_type, client_info = loadfile('secrets.json') |
- # using App Engine memcache service |
- from google.appengine.api import memcache |
- client_type, client_info = loadfile('secrets.json', cache=memcache) |
- |
- Args: |
- filename: string, Path to a client_secrets.json file on a filesystem. |
- cache: An optional cache service client that implements get() and set() |
- methods. If not specified, the file is always being loaded from |
- a filesystem. |
- |
- Raises: |
- InvalidClientSecretsError: In case of a validation error or some |
- I/O failure. Can happen only on cache miss. |
- |
- Returns: |
- (client_type, client_info) tuple, as _loadfile() normally would. |
- JSON contents is validated only during first load. Cache hits are not |
- validated. |
- """ |
- _SECRET_NAMESPACE = 'oauth2client:secrets#ns' |
- |
- if not cache: |
- return _loadfile(filename) |
- |
- obj = cache.get(filename, namespace=_SECRET_NAMESPACE) |
- if obj is None: |
- client_type, client_info = _loadfile(filename) |
- obj = {client_type: client_info} |
- cache.set(filename, obj, namespace=_SECRET_NAMESPACE) |
- |
- return next(six.iteritems(obj)) |