コード例 #1
0
    def test_post(self):

        with requests_mock.Mocker() as mocker:
            mocker.register_uri('POST',
                                'http://localhost',
                                json={'test': 'value'},
                                status_code=201)

            request_handler = RequestHandler()
            data, status = request_handler.post(
                'http://localhost',
                json_payload={'hello': 'world'},
                api_key='8900',
                username='******',
                event='myevent',
                signature='mysignature')
            self.assertEqual(status, client.CREATED)
            self.assertEqual({'test': 'value'}, data)
            self.assertEqual(request_handler.headers['username'], 'samjones')
            self.assertEqual(request_handler.headers['api-key'], '8900')
            self.assertEqual(request_handler.headers['event'], 'myevent')
            self.assertEqual(request_handler.headers['pywebhooks-signature'],
                             'mysignature')
            self.assertEqual(request_handler.headers['Content-Type'],
                             'application/json')
            self.assertEqual(request_handler.headers['Accept'],
                             'application/json')
コード例 #2
0
    def test_post(self):

        with requests_mock.Mocker() as mocker:
            mocker.register_uri('POST', 'http://localhost',
                                json={'test': 'value'},
                                status_code=201)

            request_handler = RequestHandler()
            data, status = request_handler.post(
                'http://localhost',
                json_payload={'hello': 'world'},
                api_key='8900',
                username='******',
                event='myevent',
                signature='mysignature'
            )
            self.assertEqual(status, client.CREATED)
            self.assertEqual({'test': 'value'}, data)
            self.assertEqual(request_handler.headers['username'], 'samjones')
            self.assertEqual(request_handler.headers['api-key'], '8900')
            self.assertEqual(request_handler.headers['event'], 'myevent')
            self.assertEqual(
                request_handler.headers['pywebhooks-signature'], 'mysignature')
            self.assertEqual(
                request_handler.headers['Content-Type'], 'application/json')
            self.assertEqual(
                request_handler.headers['Accept'], 'application/json')
コード例 #3
0
def notify_subscribed_accounts(self, event=None, event_data=None,
                               secret_key=None, endpoint=None,
                               account_id=None):
    """
    Send Webhook requests to all subscribed accounts
    """
    signature = create_signature(secret_key, event_data)

    request_handler = RequestHandler(
        verify_ssl=False, request_timeout=REQUEST_TIMEOUT)

    try:
        _, status_code = request_handler.post(
            url=endpoint,
            json_payload=event_data, event=event,
            signature=signature)

        # We don't care about anything but the return status code
        if client.OK != status_code:
            raise Exception('Endpoint returning non HTTP 200 status. '
                            'Actual code returned: {0}'.format(status_code))

        if client.OK == status_code:
            # Failed count will reset on a good contact
            update_failed_count(account_id, increment_failed_count=False)

    except Exception as exc:
        update_failed_count(account_id, increment_failed_count=True)

        if self.request.retries == 3:
            raise self.retry(exc=exc, countdown=DEFAULT_FINAL_RETRY)
        else:
            raise self.retry(exc=exc, countdown=DEFAULT_RETRY)
コード例 #4
0
def notify_subscribed_accounts(self,
                               event=None,
                               event_data=None,
                               secret_key=None,
                               endpoint=None,
                               account_id=None):
    """
    Send Webhook requests to all subscribed accounts
    """
    signature = create_signature(secret_key, event_data)

    request_handler = RequestHandler(verify_ssl=False,
                                     request_timeout=REQUEST_TIMEOUT)

    try:
        _, status_code = request_handler.post(url=endpoint,
                                              json_payload=event_data,
                                              event=event,
                                              signature=signature)

        # We don't care about anything but the return status code
        if client.OK != status_code:
            raise Exception('Endpoint returning non HTTP 200 status. '
                            'Actual code returned: {0}'.format(status_code))

        if client.OK == status_code:
            # Failed count will reset on a good contact
            update_failed_count(account_id, increment_failed_count=False)

    except Exception as exc:
        update_failed_count(account_id, increment_failed_count=True)

        if self.request.retries == 3:
            raise self.retry(exc=exc, countdown=DEFAULT_FINAL_RETRY)
        else:
            raise self.retry(exc=exc, countdown=DEFAULT_RETRY)