Skip to main content

Multipart/* reader extracted from awsome `aiohttp` project, cf.: http://aiohttp.readthedocs.org/en/stable/multipart.html.

Project description

We are under CI!!

Permits to read a multipart content like, mixed, related, etc.

Thanks to the aiohttp project for the implementation, cf.: http://aiohttp.readthedocs.org/en/stable/multipart.html. Unfortunately lot of people have not yet moved to asyncio, or do not want the full aiohttp stack to read the multipart content.

Here we tried to keep all the aiohttp logic and coverage but the coroutines mechanism.

What it does

It reads the same way multpart/x contents. Lets say we have the following multipart/related content:

>>> import json

>>> from email.mime.multipart import MIMEMultipart
>>> from email.mime.base import MIMEBase

>>> multipart = MIMEMultipart('related')

>>> part = MIMEBase('application', 'json')
>>> part.set_payload(json.dumps({'foo': 'bar'}))
>>> multipart.attach(part)

>>> part = MIMEBase('application', 'octet-stream')
>>> part.set_payload(b"Python will save the world. I don't know how. But it will.")
>>> part.add_header('Content-Disposition', 'attachment', filename='python-save-the-world.txt')
>>> multipart.attach(part)

Here is how we can read it:

>>> import io

>>> from multipart_reader import MultipartReader

>>> content = multipart.as_string().split('\n\n', 1)[1]
>>> headers = dict(multipart.items())

>>> stream = io.BytesIO()
>>> stream.write(content)
>>> stream.seek(0)

>>> reader = MultipartReader(headers, stream)

>>> json_part = reader.next()
>>> json_part.json()
{'foo': 'bar'}

>>> file_part = reader.next()
>>> file_part.read()
"Python will save the world. I don't know how. But it will."

>>> file_part.filename
'python-save-the-world.txt'

That’s it …

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multipart-reader-0.2.tar.gz (15.3 kB view details)

Uploaded Source

Built Distributions

multipart_reader-0.2-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

multipart_reader-0.2-py2-none-any.whl (13.6 kB view details)

Uploaded Python 2

File details

Details for the file multipart-reader-0.2.tar.gz.

File metadata

File hashes

Hashes for multipart-reader-0.2.tar.gz
Algorithm Hash digest
SHA256 6f93a9962a53c690f1cd991e54e1cbc86cddc5702dbeade475d34a2b2c7a8536
MD5 4d778e0e2a643e21567d24abf1e7c874
BLAKE2b-256 161f49063205de98aacf13c9f4bb10dbdb9cf2cb38f460b045b328dc8dc32956

See more details on using hashes here.

File details

Details for the file multipart_reader-0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for multipart_reader-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7f3a73e82eb7b39d805a5aeb6267d23aa30689ec7212baa9ea70aa2fe0d04a9f
MD5 8c8a94b8e4b951d4207c5e803d11f91b
BLAKE2b-256 d576af80dfa29ea3ce68f4ced4de6544e4cf47595de55c1f1f6693ca3717a28e

See more details on using hashes here.

File details

Details for the file multipart_reader-0.2-py2-none-any.whl.

File metadata

File hashes

Hashes for multipart_reader-0.2-py2-none-any.whl
Algorithm Hash digest
SHA256 87a0a9c31d24200f013059d31cea4768cc07f882c8e9289ef68c382e092e52fc
MD5 8e0bcaec62410b7e9d3489c64d66d1e6
BLAKE2b-256 c32f13ed19fddf0873d6b71d641202868e2ff9194bde48e64e5b91193c9378dc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page