From 4c364161fabffb95bdf5443037cf67f5ec208aa1 Mon Sep 17 00:00:00 2001 From: MS Date: Wed, 22 Jul 2020 17:08:18 +0200 Subject: factor out http code --- talermerchantdemos/httpcommon/__init__.py | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 talermerchantdemos/httpcommon/__init__.py (limited to 'talermerchantdemos/httpcommon') diff --git a/talermerchantdemos/httpcommon/__init__.py b/talermerchantdemos/httpcommon/__init__.py new file mode 100644 index 0000000..1aecbcd --- /dev/null +++ b/talermerchantdemos/httpcommon/__init__.py @@ -0,0 +1,63 @@ +import requests + +## +# POST a request to the backend, and return a error +# response if any error occurs. +# +# @param endpoint the backend endpoint where to POST +# this request. +# @param json the POST's body. +# @return the backend response (JSON format). +def backend_post(backend_url, endpoint, json): + headers = {"Authorization": "ApiKey " + APIKEY} + try: + resp = requests.post( + urljoin(backend_url, endpoint), json=json, headers=headers + ) + except requests.ConnectionError: + err_abort(500, message="Could not establish connection to backend") + try: + response_json = resp.json() + except ValueError: + err_abort( + 500, + message="Could not parse response from backend", + status_code=resp.status_code + ) + if resp.status_code != 200: + err_abort( + 500, + message="Backend returned error status", + json=response_json, + status_code=resp.status_code + ) + return response_json + + +## +# Issue a GET request to the backend. +# +# @param endpoint the backend endpoint where to issue the request. +# @param params (dict type of) URL parameters to append to the request. +# @return the JSON response from the backend, or a error response +# if something unexpected happens. +def backend_get(backend_url, endpoint, params): + headers = {"Authorization": "ApiKey " + APIKEY} + try: + resp = requests.get( + urljoin(backend_url, endpoint), params=params, headers=headers + ) + except requests.ConnectionError: + err_abort(500, message="Could not establish connection to backend") + try: + response_json = resp.json() + except ValueError: + err_abort(500, message="Could not parse response from backend") + if resp.status_code != 200: + err_abort( + 500, + message="Backend returned error status", + json=response_json, + status_code=resp.status_code + ) + return response_json -- cgit v1.2.3