コード例 #1
0
ファイル: api_lib.py プロジェクト: weizai118/midonet
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)
コード例 #2
0
ファイル: api_lib.py プロジェクト: williamwang0/MusicGen
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)