def do_upload(uri, body=None, query=None, headers=None): """Processes an HTTP POST request with a binary input and output JSON. Returns a 2-tuple made of HTTP response, and content deserialized into an object. """ LOG.debug("do upload: uri=%s" % uri) LOG.debug("do upload: body=%r" % len(body)) LOG.debug("do upload: headers=%s" % headers) try: response, content = httplib2.Http().request(uri, 'POST', body, headers=headers) except socket.error: raise exc.MidoApiConnectionError() if is_http_error(response['status']): err = http_errors[response['status']](content) LOG.error("Got HTTP error(response=%r content=%r) for " "request(uri=%r, body=%r, query=%r, headers=%r)." "Raising exception=%r" % (response, content, uri, body, query, headers, err)) raise err return response, from_json(content)
def do_request(uri, method, body=None, query=None, headers=None, disable_ssl_certificate_validation=False): """Process a http rest request with input and output json strings. Sends json string serialized from body to uri with verb method and returns a 2-tuple made of http response, and content deserialized into an object. """ LOG.debug("do_request: uri=%s, method=%s" % (uri, method)) LOG.debug("do_request: body=%s" % body) LOG.debug("do_request: headers=%s" % headers) LOG.debug("do_request: disable_ssl_certificate_validation=%s" % disable_ssl_certificate_validation) if query: uri += '?' + urllib.urlencode(query) data = json.dumps(body) if body is not None else '{}' headers = headers or dict() try: response, content = (httplib2.Http( disable_ssl_certificate_validation= disable_ssl_certificate_validation).request(uri, method, data, headers=headers)) except socket.error: raise exc.MidoApiConnectionError() LOG.debug("do_request: response=%s | content=%s" % (response, content)) if is_http_error(response['status']): err = http_errors[response['status']](content) LOG.error("Got http error(response=%r, content=%r) for " "request(uri=%r, method=%r, body=%r, query=%r,headers=%r). " "Raising exception=%r" % (response, content, uri, method, body, query, headers, err)) raise err return response, from_json(content)