Index: tools/telemetry/third_party/gsutil/third_party/boto/boto/cognito/sync/layer1.py |
diff --git a/tools/telemetry/third_party/gsutil/third_party/boto/boto/cognito/sync/layer1.py b/tools/telemetry/third_party/gsutil/third_party/boto/boto/cognito/sync/layer1.py |
deleted file mode 100644 |
index 59e9d953cd6589704c55aaaf847b81ef6fff746c..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/gsutil/third_party/boto/boto/cognito/sync/layer1.py |
+++ /dev/null |
@@ -1,494 +0,0 @@ |
-# Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved |
-# |
-# Permission is hereby granted, free of charge, to any person obtaining a |
-# copy of this software and associated documentation files (the |
-# "Software"), to deal in the Software without restriction, including |
-# without limitation the rights to use, copy, modify, merge, publish, dis- |
-# tribute, sublicense, and/or sell copies of the Software, and to permit |
-# persons to whom the Software is furnished to do so, subject to the fol- |
-# lowing conditions: |
-# |
-# The above copyright notice and this permission notice shall be included |
-# in all copies or substantial portions of the Software. |
-# |
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
-# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
-# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
-# IN THE SOFTWARE. |
-# |
-from boto.compat import json |
-from boto.exception import JSONResponseError |
-from boto.connection import AWSAuthConnection |
-from boto.regioninfo import RegionInfo |
-from boto.cognito.sync import exceptions |
- |
- |
-class CognitoSyncConnection(AWSAuthConnection): |
- """ |
- Amazon Cognito Sync |
- Amazon Cognito Sync provides an AWS service and client library |
- that enable cross-device syncing of application-related user data. |
- High-level client libraries are available for both iOS and |
- Android. You can use these libraries to persist data locally so |
- that it's available even if the device is offline. Developer |
- credentials don't need to be stored on the mobile device to access |
- the service. You can use Amazon Cognito to obtain a normalized |
- user ID and credentials. User data is persisted in a dataset that |
- can store up to 1 MB of key-value pairs, and you can have up to 20 |
- datasets per user identity. |
- |
- With Amazon Cognito Sync, the data stored for each identity is |
- accessible only to credentials assigned to that identity. In order |
- to use the Cognito Sync service, you need to make API calls using |
- credentials retrieved with `Amazon Cognito Identity service`_. |
- """ |
- APIVersion = "2014-06-30" |
- DefaultRegionName = "us-east-1" |
- DefaultRegionEndpoint = "cognito-sync.us-east-1.amazonaws.com" |
- ResponseError = JSONResponseError |
- |
- _faults = { |
- "LimitExceededException": exceptions.LimitExceededException, |
- "ResourceConflictException": exceptions.ResourceConflictException, |
- "InvalidConfigurationException": exceptions.InvalidConfigurationException, |
- "TooManyRequestsException": exceptions.TooManyRequestsException, |
- "InvalidParameterException": exceptions.InvalidParameterException, |
- "ResourceNotFoundException": exceptions.ResourceNotFoundException, |
- "InternalErrorException": exceptions.InternalErrorException, |
- "NotAuthorizedException": exceptions.NotAuthorizedException, |
- } |
- |
- |
- def __init__(self, **kwargs): |
- region = kwargs.get('region') |
- if not region: |
- region = RegionInfo(self, self.DefaultRegionName, |
- self.DefaultRegionEndpoint) |
- else: |
- del kwargs['region'] |
- kwargs['host'] = region.endpoint |
- super(CognitoSyncConnection, self).__init__(**kwargs) |
- self.region = region |
- |
- def _required_auth_capability(self): |
- return ['hmac-v4'] |
- |
- def delete_dataset(self, identity_pool_id, identity_id, dataset_name): |
- """ |
- Deletes the specific dataset. The dataset will be deleted |
- permanently, and the action can't be undone. Datasets that |
- this dataset was merged with will no longer report the merge. |
- Any consequent operation on this dataset will result in a |
- ResourceNotFoundException. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type dataset_name: string |
- :param dataset_name: A string of up to 128 characters. Allowed |
- characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' |
- (dot). |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}'.format( |
- identity_pool_id, identity_id, dataset_name) |
- return self.make_request('DELETE', uri, expected_status=200) |
- |
- def describe_dataset(self, identity_pool_id, identity_id, dataset_name): |
- """ |
- Gets metadata about a dataset by identity and dataset name. |
- The credentials used to make this API call need to have access |
- to the identity data. With Amazon Cognito Sync, each identity |
- has access only to its own data. You should use Amazon Cognito |
- Identity service to retrieve the credentials necessary to make |
- this API call. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type dataset_name: string |
- :param dataset_name: A string of up to 128 characters. Allowed |
- characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' |
- (dot). |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}'.format( |
- identity_pool_id, identity_id, dataset_name) |
- return self.make_request('GET', uri, expected_status=200) |
- |
- def describe_identity_pool_usage(self, identity_pool_id): |
- """ |
- Gets usage details (for example, data storage) about a |
- particular identity pool. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- """ |
- |
- uri = '/identitypools/{0}'.format(identity_pool_id) |
- return self.make_request('GET', uri, expected_status=200) |
- |
- def describe_identity_usage(self, identity_pool_id, identity_id): |
- """ |
- Gets usage information for an identity, including number of |
- datasets and data usage. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}'.format( |
- identity_pool_id, identity_id) |
- return self.make_request('GET', uri, expected_status=200) |
- |
- def get_identity_pool_configuration(self, identity_pool_id): |
- """ |
- Gets the configuration settings of an identity pool. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. This is the ID of the pool for which to return a |
- configuration. |
- |
- """ |
- |
- uri = '/identitypools/{0}/configuration'.format(identity_pool_id) |
- return self.make_request('GET', uri, expected_status=200) |
- |
- def list_datasets(self, identity_pool_id, identity_id, next_token=None, |
- max_results=None): |
- """ |
- Lists datasets for an identity. The credentials used to make |
- this API call need to have access to the identity data. With |
- Amazon Cognito Sync, each identity has access only to its own |
- data. You should use Amazon Cognito Identity service to |
- retrieve the credentials necessary to make this API call. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type next_token: string |
- :param next_token: A pagination token for obtaining the next page of |
- results. |
- |
- :type max_results: integer |
- :param max_results: The maximum number of results to be returned. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets'.format( |
- identity_pool_id, identity_id) |
- params = {} |
- headers = {} |
- query_params = {} |
- if next_token is not None: |
- query_params['nextToken'] = next_token |
- if max_results is not None: |
- query_params['maxResults'] = max_results |
- return self.make_request('GET', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def list_identity_pool_usage(self, next_token=None, max_results=None): |
- """ |
- Gets a list of identity pools registered with Cognito. |
- |
- :type next_token: string |
- :param next_token: A pagination token for obtaining the next page of |
- results. |
- |
- :type max_results: integer |
- :param max_results: The maximum number of results to be returned. |
- |
- """ |
- |
- uri = '/identitypools' |
- params = {} |
- headers = {} |
- query_params = {} |
- if next_token is not None: |
- query_params['nextToken'] = next_token |
- if max_results is not None: |
- query_params['maxResults'] = max_results |
- return self.make_request('GET', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def list_records(self, identity_pool_id, identity_id, dataset_name, |
- last_sync_count=None, next_token=None, max_results=None, |
- sync_session_token=None): |
- """ |
- Gets paginated records, optionally changed after a particular |
- sync count for a dataset and identity. The credentials used to |
- make this API call need to have access to the identity data. |
- With Amazon Cognito Sync, each identity has access only to its |
- own data. You should use Amazon Cognito Identity service to |
- retrieve the credentials necessary to make this API call. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type dataset_name: string |
- :param dataset_name: A string of up to 128 characters. Allowed |
- characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' |
- (dot). |
- |
- :type last_sync_count: long |
- :param last_sync_count: The last server sync count for this record. |
- |
- :type next_token: string |
- :param next_token: A pagination token for obtaining the next page of |
- results. |
- |
- :type max_results: integer |
- :param max_results: The maximum number of results to be returned. |
- |
- :type sync_session_token: string |
- :param sync_session_token: A token containing a session ID, identity |
- ID, and expiration. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}/records'.format( |
- identity_pool_id, identity_id, dataset_name) |
- params = {} |
- headers = {} |
- query_params = {} |
- if last_sync_count is not None: |
- query_params['lastSyncCount'] = last_sync_count |
- if next_token is not None: |
- query_params['nextToken'] = next_token |
- if max_results is not None: |
- query_params['maxResults'] = max_results |
- if sync_session_token is not None: |
- query_params['syncSessionToken'] = sync_session_token |
- return self.make_request('GET', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def register_device(self, identity_pool_id, identity_id, platform, token): |
- """ |
- Registers a device to receive push sync notifications. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. Here, the ID of the pool that the identity belongs to. |
- |
- :type identity_id: string |
- :param identity_id: The unique ID for this identity. |
- |
- :type platform: string |
- :param platform: The SNS platform type (e.g. GCM, SDM, APNS, |
- APNS_SANDBOX). |
- |
- :type token: string |
- :param token: The push token. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identity/{1}/device'.format( |
- identity_pool_id, identity_id) |
- params = {'Platform': platform, 'Token': token, } |
- headers = {} |
- query_params = {} |
- return self.make_request('POST', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def set_identity_pool_configuration(self, identity_pool_id, |
- push_sync=None): |
- """ |
- Sets the necessary configuration for push sync. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. This is the ID of the pool to modify. |
- |
- :type push_sync: dict |
- :param push_sync: Configuration options to be applied to the identity |
- pool. |
- |
- """ |
- |
- uri = '/identitypools/{0}/configuration'.format(identity_pool_id) |
- params = {} |
- headers = {} |
- query_params = {} |
- if push_sync is not None: |
- params['PushSync'] = push_sync |
- return self.make_request('POST', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def subscribe_to_dataset(self, identity_pool_id, identity_id, |
- dataset_name, device_id): |
- """ |
- Subscribes to receive notifications when a dataset is modified |
- by another device. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. The ID of the pool to which the identity belongs. |
- |
- :type identity_id: string |
- :param identity_id: Unique ID for this identity. |
- |
- :type dataset_name: string |
- :param dataset_name: The name of the dataset to subcribe to. |
- |
- :type device_id: string |
- :param device_id: The unique ID generated for this device by Cognito. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}/subscriptions/{3}'.format( |
- identity_pool_id, identity_id, dataset_name, device_id) |
- return self.make_request('POST', uri, expected_status=200) |
- |
- def unsubscribe_from_dataset(self, identity_pool_id, identity_id, |
- dataset_name, device_id): |
- """ |
- Unsubscribe from receiving notifications when a dataset is |
- modified by another device. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. The ID of the pool to which this identity belongs. |
- |
- :type identity_id: string |
- :param identity_id: Unique ID for this identity. |
- |
- :type dataset_name: string |
- :param dataset_name: The name of the dataset from which to unsubcribe. |
- |
- :type device_id: string |
- :param device_id: The unique ID generated for this device by Cognito. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}/subscriptions/{3}'.format( |
- identity_pool_id, identity_id, dataset_name, device_id) |
- return self.make_request('DELETE', uri, expected_status=200) |
- |
- def update_records(self, identity_pool_id, identity_id, dataset_name, |
- sync_session_token, device_id=None, |
- record_patches=None, client_context=None): |
- """ |
- Posts updates to records and add and delete records for a |
- dataset and user. The credentials used to make this API call |
- need to have access to the identity data. With Amazon Cognito |
- Sync, each identity has access only to its own data. You |
- should use Amazon Cognito Identity service to retrieve the |
- credentials necessary to make this API call. |
- |
- :type identity_pool_id: string |
- :param identity_pool_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type identity_id: string |
- :param identity_id: A name-spaced GUID (for example, us- |
- east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon |
- Cognito. GUID generation is unique within a region. |
- |
- :type dataset_name: string |
- :param dataset_name: A string of up to 128 characters. Allowed |
- characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' |
- (dot). |
- |
- :type device_id: string |
- :param device_id: The unique ID generated for this device by Cognito. |
- |
- :type record_patches: list |
- :param record_patches: A list of patch operations. |
- |
- :type sync_session_token: string |
- :param sync_session_token: The SyncSessionToken returned by a previous |
- call to ListRecords for this dataset and identity. |
- |
- :type client_context: string |
- :param client_context: Intended to supply a device ID that will |
- populate the `lastModifiedBy` field referenced in other methods. |
- The `ClientContext` field is not yet implemented. |
- |
- """ |
- |
- uri = '/identitypools/{0}/identities/{1}/datasets/{2}'.format( |
- identity_pool_id, identity_id, dataset_name) |
- params = {'SyncSessionToken': sync_session_token, } |
- headers = {} |
- query_params = {} |
- if device_id is not None: |
- params['DeviceId'] = device_id |
- if record_patches is not None: |
- params['RecordPatches'] = record_patches |
- if client_context is not None: |
- headers['x-amz-Client-Context'] = client_context |
- if client_context is not None: |
- headers['x-amz-Client-Context'] = client_context |
- return self.make_request('POST', uri, expected_status=200, |
- data=json.dumps(params), headers=headers, |
- params=query_params) |
- |
- def make_request(self, verb, resource, headers=None, data='', |
- expected_status=None, params=None): |
- if headers is None: |
- headers = {} |
- response = AWSAuthConnection.make_request( |
- self, verb, resource, headers=headers, data=data, params=params) |
- body = json.loads(response.read().decode('utf-8')) |
- if response.status == expected_status: |
- return body |
- else: |
- error_type = response.getheader('x-amzn-ErrorType').split(':')[0] |
- error_class = self._faults.get(error_type, self.ResponseError) |
- raise error_class(response.status, response.reason, body) |