def request(self, method, url, data=None, params=None): logger.debug("API request {} {}".format(method, url)) payload = json.dumps(data) api_token = create_jwt_token( self.api_key, self.service_id ) headers = { "Content-type": "application/json", "Authorization": "Bearer {}".format(api_token), "User-agent": "NOTIFY-API-PYTHON-CLIENT/{}".format(__version__), } url = urlparse.urljoin(self.base_url, url) start_time = monotonic() try: response = requests.request( method, url, headers=headers, data=payload, params=params ) response.raise_for_status() except requests.RequestException as e: api_error = HTTPError.create(e) logger.error( "API {} request on {} failed with {} '{}'".format( method, url, api_error.status_code, api_error.message ) ) raise api_error finally: elapsed_time = monotonic() - start_time logger.debug("API {} request on {} finished in {}".format(method, url, elapsed_time)) try: if response.status_code == 204: return return response.json() except ValueError: raise InvalidResponse( response, message="No JSON response object could be decoded" )
def _perform_request(self, method, url, kwargs): start_time = monotonic() try: response = requests.request(method, url, **kwargs) response.raise_for_status() return response except requests.RequestException as e: api_error = HTTPError.create(e) logger.error("API {} request on {} failed with {} '{}'".format( method, url, api_error.status_code, api_error.message)) raise api_error finally: elapsed_time = monotonic() - start_time logger.debug("API {} request on {} finished in {}".format( method, url, elapsed_time))
def request(self, method, url, data=None, params=None): logger.debug("API request {} {}".format(method, url)) api_token = create_jwt_token(self.api_key, self.service_id) kwargs = { "headers": self.generate_headers(api_token), } if data is not None: kwargs.update(data=json.dumps(data)) if params is not None: kwargs.update(params=params) url = urllib.parse.urljoin(str(self.base_url), str(url)) start_time = monotonic() try: response = requests.request(method, url, **kwargs) response.raise_for_status() except requests.RequestException as e: api_error = HTTPError.create(e) logger.error("API {} request on {} failed with {} '{}'".format( method, url, api_error.status_code, api_error.message)) raise api_error finally: elapsed_time = monotonic() - start_time logger.debug("API {} request on {} finished in {}".format( method, url, elapsed_time)) try: if response.status_code == 204: return return response.json() except ValueError: raise InvalidResponse( response, message="No JSON response object could be decoded")