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')
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')
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)
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)