def get_json(self, uri, params=None, headers=None): try: resp = requests.get(uri, params=params, headers=headers, timeout=self.timeout, verify=self.verify_ssl_certs) except requests.exceptions.SSLError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.ConnectionError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.Timeout: raise api_call_error.APICallTimeoutError('API call timeouted') HttpClient.check_status_code(resp.status_code, resp.text) try: return resp.status_code, resp.json() except: raise parse_response_error.ParseResponseError('Impossible to parse' 'API response data')
def post(self, uri, params=None, data=None, headers=None): try: resp = requests.post(uri, params=params, json=data, headers=headers, timeout=self.timeout, verify=self.verify_ssl_certs) except requests.exceptions.SSLError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.ConnectionError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.Timeout: raise api_call_error.APICallTimeoutError('API call timeouted') HttpClient.check_status_code(resp.status_code, resp.text) # this is a defense against OWM API responses containing an empty body! try: json_data = resp.json() except: json_data = {} return resp.status_code, json_data
def get_geotiff(self, uri, params=None, headers=None): if headers is None: headers = {'Accept': ImageTypeEnum.GEOTIFF.mime_type} else: headers.update({'Accept': ImageTypeEnum.GEOTIFF.mime_type}) try: resp = requests.get(uri, stream=True, params=params, headers=headers, timeout=self.timeout, verify=self.verify_ssl_certs) except requests.exceptions.SSLError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.ConnectionError as e: raise api_call_error.APIInvalidSSLCertificateError(str(e)) except requests.exceptions.Timeout: raise api_call_error.APICallTimeoutError('API call timeouted') HttpClient.check_status_code(resp.status_code, resp.text) try: return resp.status_code, resp.content except: raise parse_response_error.ParseResponseError('Impossible to parse' 'API response data')