Beispiel #1
0
    def make_signed_request(self,
                            method,
                            url,
                            data=None,
                            params=None,
                            ttl=100,
                            **kwargs):
        signer = signing.Signer(settings.HMAC_SECRET, settings.HMAC_ALGORITHM)
        if method.upper() in QUERY_METHODS:
            signed = signing.sign_data(signer, params or {}, ttl=ttl)
            params = signed
        else:
            signed = signing.sign_data(signer, json.loads(data or {}), ttl=ttl)
            data = json.dumps(signed)

        # Ensure url ends with a /
        if not url.endswith('/'):
            if '?' not in url:
                url += '/'
            elif url[url.rfind('?') - 1] != '/':
                url = url.replace('?', '/?')

        return (yield from self.make_request(method,
                                             url,
                                             data=data,
                                             params=params,
                                             **kwargs))
Beispiel #2
0
 def make_signed_request(self, method, url, data=None, params=None, ttl=100, **kwargs):
     signer = signing.Signer(settings.HMAC_SECRET, settings.HMAC_ALGORITHM)
     if method.upper() in QUERY_METHODS:
         signed = signing.sign_data(signer, params, ttl=ttl)
         params = signed
     else:
         signed = signing.sign_data(signer, json.loads(data), ttl=ttl)
         data = json.dumps(signed)
     return (yield from self.make_request(method, url, data=data, params=params, **kwargs))
Beispiel #3
0
    def build_signed_url(self, method, url, data=None, params=None, ttl=100, **kwargs):
        signer = signing.Signer(settings.HMAC_SECRET, settings.HMAC_ALGORITHM)
        if method.upper() in QUERY_METHODS:
            signed = signing.sign_data(signer, params or {}, ttl=ttl)
            params = signed
        else:
            signed = signing.sign_data(signer, json.loads(data or {}), ttl=ttl)
            data = json.dumps(signed)

        # Ensure url ends with a /
        if not url.endswith('/'):
            if '?' not in url:
                url += '/'
            elif url[url.rfind('?') - 1] != '/':
                url = url.replace('?', '/?')

        return url, data, params
Beispiel #4
0
async def push_metadata(version_id, callback_url, metadata):
    signer = signing.Signer(settings.HMAC_SECRET, settings.HMAC_ALGORITHM)
    data = signing.sign_data(
        signer,
        {
            'version': version_id,
            'metadata': metadata,
        },
    )
    response = await aiohttp.request(
        'PUT',
        callback_url,
        data=json.dumps(data),
        headers={'Content-Type': 'application/json'},
    )

    if response.status != HTTPStatus.OK:
        raise Exception('Failed to report archive completion, got status '
                        'code {}'.format(response.status))
Beispiel #5
0
def _push_archive_complete(self, version_id, callback_url, metadata):
    signer = signing.Signer(settings.HMAC_SECRET, settings.HMAC_ALGORITHM)
    with utils.RetryHook(self):
        data = signing.sign_data(
            signer,
            {
                'version': version_id,
                'metadata': metadata,
            },
        )
        future = aiohttp.request(
            'PUT',
            callback_url,
            data=json.dumps(data),
            headers={'Content-Type': 'application/json'},
        )
        loop = asyncio.get_event_loop()
        response = loop.run_until_complete(future)

        if response.status != http.client.OK:
            raise Exception('Failed to report archive completion, got status code {}'.format(response.status))