Reference / http

http

def normalizeHeaders(headers={}):
    normalized = {}
    for k, v in headers.items():
        if type(v) != "list":
            v = [v]
        normalized[k] = v
    return normalized

def _post(url, headers={}, body=""):
    resp = backend.http.req(json.encode({
        "method": "POST",
        "url": url,
        "headers": normalizeHeaders(headers),
        "body": body,
    }))
    return _response(resp)

def _get(url, headers={}):
    resp = backend.http.req(json.encode({
        "method": "GET",
        "url": url,
        "headers": normalizeHeaders(headers),
    }))
    return _response(resp)

def _head(url, headers={}):
    resp = backend.http.req(json.encode({
        "method": "HEAD",
        "url": url,
        "headers": normalizeHeaders(headers),
    }))
    return _response(resp)

def _put(url, headers={}, body=""):
    resp = backend.http.req(json.encode({
        "method": "PUT",
        "url": url,
        "headers": normalizeHeaders(headers),
        "body": body,
    }))
    return _response(resp)

def _patch(url, headers={}, body=""):
    resp = backend.http.req(json.encode({
        "method": "PATCH",
        "url": url,
        "headers": normalizeHeaders(headers),
        "body": body,
    }))
    return _response(resp)

def _delete(url, headers={}):
    resp = backend.http.req(json.encode({
        "method": "DELETE",
        "url": url,
        "headers": normalizeHeaders(headers),
    }))
    return _response(resp)

def _response(resp_json):
    resp = json.decode(resp_json)
    return struct(
        status_code = resp.get("status_code"),
        status_text = resp.get("status_text"),
        headers = resp.get("headers"),
        body = resp.get("body"),
    )

http = struct(
    get = _get,
    post = _post,
    head = _head,
    put = _put,
    patch = _patch,
    delete = _delete,
)