Skip to main content

Headers: Keep-It=Simple; And=Stupid.

Project description

Welcome to Headers for Human 👋

Temporary logo
Imagine you could combine advantages of many representations ! With auto-completion !
Download Count /Month License: MIT PyPi Publish Action Code style: black Download Count Total

❓ Why

No matters your religion, IMAP4 or HTTP, you should not worries about accessing easily header and associated attributes, adjectives or values.

using kiss-headers from python interpreter

I have seen so much chunk of code trying to deal with them, often I saw this :

charset = headers['Content-Type'].split(';')[-1].split('=')[-1].replace('"', '')

No more of that ! 🤮

🔪 Features

kiss-headers is a library on steroid that allow you to handle with great care headers.

  • A backward compatible syntax using bracket style.
  • Capable to alter headers using simple operator notation + and - like a human would do.
  • Does not care if headers are from IMAP4 or HTTP, do as you need with one library.
  • Ability to parse any object and extract from it recognized headers.
  • Fully type annotated.
  • Provide great auto-completion in python interpreter or any capable IDE.
  • 90% test coverage.

Plus all the features that you would expect from handling headers...

  • Properties syntax for headers and attribute in header.
  • Support headers and attributes OneToOne and OneToMany.
  • Capable of parsing bytes, fp, str, dict and requests.Response.
  • Automatically unquote value of an attribute when retrieving it.
  • Case insensible on header name and attribute key.
  • Character - equal _ in addition of above feature.
  • Any syntax you like. We like.

Your support

Please 🌟 this repository if this project helped you! ✨ That would be very much appreciated ✨

✨ Installation

Whatever you like, use Pipenv or pip, it simply work. We are expecting you to have python 3.6+ installed.

pip install kiss-headers

🍰 Usage

parse_it() method take bytes, str, fp, dict or even requests.Response itself and give you back a Headers object.

from requests import get
from kiss_headers import parse_it

response = get('https://www.google.fr')
headers = parse_it(response)

headers.content_type.charset  # output: ISO-8859-1

Do not forget that headers are not 1 TO 1. One header can be repeated multiple time and attribute can have multiple value within the same header.

from kiss_headers import parse_it

my_cookies = """set-cookie: 1P_JAR=2020-03-16-21; expires=Wed, 15-Apr-2020 21:27:31 GMT; path=/; domain=.google.fr; Secure; SameSite=none
set-cookie: CONSENT=WP.284b10; expires=Fri, 01-Jan-2038 00:00:00 GMT; path=/; domain=.google.fr"""

headers = parse_it(my_cookies)

type(headers.set_cookie)  # output: list
headers.set_cookie[0].expires # output Wed, 15-Apr-2020 21:27:31 GMT

Just a note to inform you that accessing a header that have the same name as a reserved keyword must be done this way :

headers = parse_it('From: Ousret; origin=www.github.com\nIS: 1\nWhile: Not-True')

# this flavour
headers.from_ # to access From, just add a single underscore to it
# or..
headers['from']

📜 Documentation

See the full documentation for advanced usages : www.kiss-headers.tech

👤 Contributing

Contributions, issues and feature requests are very much welcome.
Feel free to check issues page if you want to contribute.

📝 License

Copyright © 2020 Ahmed TAHRI @Ousret.
This project is MIT licensed.

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

kiss-headers-1.1.0.tar.gz (14.3 kB view hashes)

Uploaded Source

Built Distribution

kiss_headers-1.1.0-py3-none-any.whl (12.6 kB view hashes)

Uploaded Python 3

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