Skip to content

michalc/lowhaio-chunked

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lowhaio-chunked CircleCI

Chunked transfer request encoding for lowhaio. This is only needed if content-length is unknown before the body starts to transfer.

Installation

pip install lowhaio lowhaio_chunked

or just copy and paste the below 8 lines of code into your project, ensuring to also follow the requirements in the LICENSE file.

def chunked(body):
    async def _chunked(*args, **kwargs):
        async for chunk in body(*args, **kwargs):
            yield hex(len(chunk))[2:].encode() + b'\r\n'
            yield chunk
            yield b'\r\n'
        yield b'0\r\n\r\n'
    return _chunked

Usage

Usage is very similar to standard lowhaio, except that the body data should be wrapped with the chunked function; the transfer-encoding: chunked header is required; and the content-length header should not be specified.

So instead of a request like

from lowhaio import Pool

request, _ = Pool()

body = ...

code, headers, body = await request(
    b'POST', 'https://example.com/path', body=body,
    headers=((b'content-length', b'1234'),),
)

you can write

from lowhaio import Pool
from lowhaio_chunked import chunked  # Or paste in the code above

request, _ = Pool()

body = ...

code, headers, body = await request(
    b'POST', 'https://example.com/path', body=chunked(body),
    headers=((b'transfer-encoding': b'chunked'),),
)

About

Chunked transfer request encoding for lowhaio

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages