def make_request()

in http/get_compressed/python/client/client.py [0:0]


def make_request(uri, compression):
    coding = "identity" if compression.startswith("identity") else compression
    # urllib.request.urlopen() always sends an HTTP/1.1 request
    # with Accept-Encoding: identity, so we need to setup a request
    # object with custom headers to request a specific compression
    headers = {
        "Accept-Encoding": f"{coding}, *;q=0",
    }
    if compression.startswith("identity+"):
        # request IPC buffer compression instead of HTTP compression
        ipc_codec = compression.split("+")[1]
        headers["Accept"] = f'{ARROW_STREAM_FORMAT};codecs="{ipc_codec}"'
    request = urllib.request.Request(uri, headers=headers)

    response = urllib.request.urlopen(request)
    content_type = response.headers["Content-Type"]
    if not content_type.startswith(ARROW_STREAM_FORMAT):
        raise ValueError(f"Expected {ARROW_STREAM_FORMAT}, got {content_type}")
    if compression.startswith("identity"):
        return response
    # IANA nomenclature for Brotli is "br" and not "brotli"
    compression = "brotli" if compression == "br" else compression
    return pa.CompressedInputStream(response, compression)