httoop


Namehttoop JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/spaceone/httoop
Summaryobject oriented HTTP protocol library
upload_time2022-12-28 01:33:26
maintainer
docs_urlNone
authorSpaceOne
requires_python
licenseMIT
keywords http web proxy cache client server library
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            [![Build Status](https://travis-ci.org/spaceone/httoop.svg)](https://travis-ci.org/spaceone/httoop)
[![codecov](https://codecov.io/gh/spaceone/httoop/branch/master/graph/badge.svg)](https://codecov.io/gh/spaceone/httoop)
[![Code Climate](https://codeclimate.com/github/spaceone/httoop/badges/gpa.svg)](https://codeclimate.com/github/spaceone/httoop)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/spaceone/httoop/raw/master/LICENSE)

httoop
======

An object oriented HTTP/1.1 library. (HTTP/2 will probably follow in the future).

Httoop can be used to parse, compose and work with HTTP-Request- and Response-Messages.

It is an generic library for implementing HTTP servers, clients, caches and proxies.

Httoop provides an powerful interface using the vocabularity used in RFC 7230 - 7235 and focuses on implementing HTTP "compliant" as defined in [RFC 7230 Section 2.5](https://datatracker.ietf.org/doc/html/rfc7230#section-2.5).

"An implementation is not compliant if it fails to satisfy one or more of the MUST or REQUIRED level requirements for the protocols it implements."
[RFC 2616 Section 1.2](https://datatracker.ietf.org/doc/html/rfc2616#section-1.2)

On top of the object oriented abstraction of HTTP httoop provides an easy way to support WSGI.


HTTP and extensions are defined in the following RFC's:

* HTTP/1.1 RFC 7230 [Message Syntax and Routing](https://datatracker.ietf.org/doc/html/rfc7230)

* HTTP/1.1 RFC 7231 [Semantics and Content](https://datatracker.ietf.org/doc/html/rfc7231)

* HTTP/1.1 RFC 7232 [Conditional Requests](https://datatracker.ietf.org/doc/html/rfc7232)

* HTTP/1.1 RFC 7233 [Range Requests](https://datatracker.ietf.org/doc/html/rfc7233)

* HTTP/1.1 RFC 7234 [Caching](https://datatracker.ietf.org/doc/html/rfc7234)

* HTTP/1.1 RFC 7235 [Authentication](https://datatracker.ietf.org/doc/html/rfc7235)

* <s>Hypertext Transfer Protocol -- HTTP/1.1 ([RFC 2616](https://datatracker.ietf.org/doc/html/rfc2616)) </s>

* HTTP/2 RFC 7540 [Hypertext Transfer Protocol Version 2](https://datatracker.ietf.org/doc/html/rfc7540)

* HTTP/2 RFC 7541 [HPACK: Header Compression for HTTP/2](https://datatracker.ietf.org/doc/html/rfc7541)

* [IANA HTTP Status Codes](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)

* [IANA HTTP Methods](http://www.iana.org/assignments/http-methods/http-methods.xhtml)

* [IANA Message Headers](http://www.iana.org/assignments/message-headers/message-headers.xhtml)

* [IANA URI Schemes](http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml)

* [IANA HTTP Authentication Schemes](http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml)

* [IANA HTTP Cache Directives](http://www.iana.org/assignments/http-cache-directives/http-cache-directives.xhtml)

* RFC 5987 [Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters](https://datatracker.ietf.org/doc/html/rfc5987)

* Uniform Resource Identifier (URI) ([RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986))

* Internet Message Format ([RFC 822](https://datatracker.ietf.org/doc/html/rfc822), [2822](https://datatracker.ietf.org/doc/html/rfc2822), [5322](https://datatracker.ietf.org/doc/html/rfc5322))

* <s>HTTP Authentication: Basic and Digest Access Authentication ([RFC 2617](https://datatracker.ietf.org/doc/html/rfc2617))</s>

* HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields ([RFC 7615](https://datatracker.ietf.org/doc/html/rfc7615))

* HTTP Digest Access Authentication ([RFC 7616](https://datatracker.ietf.org/doc/html/rfc7616))

* The 'Basic' HTTP Authentication Scheme ([RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617))

* Additional HTTP Status Codes ([RFC 6585](https://datatracker.ietf.org/doc/html/rfc6585))

* Forwarded HTTP Extension [RFC 7239](https://datatracker.ietf.org/doc/html/rfc7239)

* Prefer Header for HTTP [RFC 7240](https://datatracker.ietf.org/doc/html/rfc7240)

* PATCH Method for HTTP ([RFC 5789](https://datatracker.ietf.org/doc/html/rfc5789))

* JavaScript Object Notation (JSON) Patch ([RFC 6902](https://datatracker.ietf.org/doc/html/rfc6902))

* Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) ([RFC 6266](https://datatracker.ietf.org/doc/html/rfc6266))

* Upgrading to TLS Within HTTP/1.1 ([RFC 2817](https://datatracker.ietf.org/doc/html/rfc2817))

* Transparent Content Negotiation in HTTP ([RFC 2295](https://datatracker.ietf.org/doc/html/rfc2295))

* HTTP Remote Variant Selection Algorithm -- RVSA/1.0 ([RFC 2296](https://datatracker.ietf.org/doc/html/rfc2296))

* HTTP State Management Mechanism ([RFC 6265](https://datatracker.ietf.org/doc/html/rfc6265))

* Same-site Cookies ([Draft 7](https://datatracker.ietf.org/doc/html/rfcdraft-west-first-party-cookies-07))

* HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) ([RFC 4918](https://datatracker.ietf.org/doc/html/rfc4918))

* Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) ([RFC 2324](https://datatracker.ietf.org/doc/html/rfc2324))

Extended information about hypermedia, WWW and how HTTP is meant to be used:

* Web Linking ([RFC 5988](https://datatracker.ietf.org/doc/html/rfc5988))

* Representational State Transfer [REST](http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)

  * [REST APIs must be hypertext-driven](https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven)

  * [Specialization](https://roy.gbiv.com/untangled/2008/specialization)

  * [No REST in CMIS](https://roy.gbiv.com/untangled/2008/no-rest-in-cmis)

  * [On software architecture](https://roy.gbiv.com/untangled/2008/on-software-architecture)

  * [It is okay to use POST](https://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post)

  * [Paper tigers and hidden dragons](https://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons)

  * [Economies of scale](https://roy.gbiv.com/untangled/2008/economies-of-scale)

* [Richardson Maturity Model](https://martinfowler.com/articles/richardsonMaturityModel.html)

* [Test Cases for HTTP Content-Disposition header field](http://greenbytes.de/tech/tc2231/)

* [Cross-Origin Resource Sharing](http://www.w3.org/TR/cors/)

* [HTTP (HTML) Leaks](https://github.com/cure53/HTTPLeaks/blob/main/leak.html)

OAuth 2.0:

* [OAuth Working Group Specifications](https://oauth.net/specs/)
* [OAuth 2.0 Security Best Current Practice](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics)
* [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)
* [Bearer Token Usage](https://datatracker.ietf.org/doc/html/rfc6750)
* [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519)
* [JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://datatracker.ietf.org/doc/html/rfc9068)
* [Resource Indicators for OAuth 2.0](https://datatracker.ietf.org/doc/html/rfc8707)



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/spaceone/httoop",
    "name": "httoop",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "HTTP web proxy cache client server library",
    "author": "SpaceOne",
    "author_email": "space@wechall.net",
    "download_url": "https://files.pythonhosted.org/packages/ae/2e/1799c58071cf1d1cdfa8e8de19f6ef4cec67b018caa387bf8067b2579195/httoop-0.1.1.tar.gz",
    "platform": "POSIX",
    "description": "[![Build Status](https://travis-ci.org/spaceone/httoop.svg)](https://travis-ci.org/spaceone/httoop)\n[![codecov](https://codecov.io/gh/spaceone/httoop/branch/master/graph/badge.svg)](https://codecov.io/gh/spaceone/httoop)\n[![Code Climate](https://codeclimate.com/github/spaceone/httoop/badges/gpa.svg)](https://codeclimate.com/github/spaceone/httoop)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/spaceone/httoop/raw/master/LICENSE)\n\nhttoop\n======\n\nAn object oriented HTTP/1.1 library. (HTTP/2 will probably follow in the future).\n\nHttoop can be used to parse, compose and work with HTTP-Request- and Response-Messages.\n\nIt is an generic library for implementing HTTP servers, clients, caches and proxies.\n\nHttoop provides an powerful interface using the vocabularity used in RFC 7230 - 7235 and focuses on implementing HTTP \"compliant\" as defined in [RFC 7230 Section 2.5](https://datatracker.ietf.org/doc/html/rfc7230#section-2.5).\n\n\"An implementation is not compliant if it fails to satisfy one or more of the MUST or REQUIRED level requirements for the protocols it implements.\"\n[RFC 2616 Section 1.2](https://datatracker.ietf.org/doc/html/rfc2616#section-1.2)\n\nOn top of the object oriented abstraction of HTTP httoop provides an easy way to support WSGI.\n\n\nHTTP and extensions are defined in the following RFC's:\n\n* HTTP/1.1 RFC 7230 [Message Syntax and Routing](https://datatracker.ietf.org/doc/html/rfc7230)\n\n* HTTP/1.1 RFC 7231 [Semantics and Content](https://datatracker.ietf.org/doc/html/rfc7231)\n\n* HTTP/1.1 RFC 7232 [Conditional Requests](https://datatracker.ietf.org/doc/html/rfc7232)\n\n* HTTP/1.1 RFC 7233 [Range Requests](https://datatracker.ietf.org/doc/html/rfc7233)\n\n* HTTP/1.1 RFC 7234 [Caching](https://datatracker.ietf.org/doc/html/rfc7234)\n\n* HTTP/1.1 RFC 7235 [Authentication](https://datatracker.ietf.org/doc/html/rfc7235)\n\n* <s>Hypertext Transfer Protocol -- HTTP/1.1 ([RFC 2616](https://datatracker.ietf.org/doc/html/rfc2616)) </s>\n\n* HTTP/2 RFC 7540 [Hypertext Transfer Protocol Version 2](https://datatracker.ietf.org/doc/html/rfc7540)\n\n* HTTP/2 RFC 7541 [HPACK: Header Compression for HTTP/2](https://datatracker.ietf.org/doc/html/rfc7541)\n\n* [IANA HTTP Status Codes](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)\n\n* [IANA HTTP Methods](http://www.iana.org/assignments/http-methods/http-methods.xhtml)\n\n* [IANA Message Headers](http://www.iana.org/assignments/message-headers/message-headers.xhtml)\n\n* [IANA URI Schemes](http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml)\n\n* [IANA HTTP Authentication Schemes](http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml)\n\n* [IANA HTTP Cache Directives](http://www.iana.org/assignments/http-cache-directives/http-cache-directives.xhtml)\n\n* RFC 5987 [Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters](https://datatracker.ietf.org/doc/html/rfc5987)\n\n* Uniform Resource Identifier (URI) ([RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986))\n\n* Internet Message Format ([RFC 822](https://datatracker.ietf.org/doc/html/rfc822), [2822](https://datatracker.ietf.org/doc/html/rfc2822), [5322](https://datatracker.ietf.org/doc/html/rfc5322))\n\n* <s>HTTP Authentication: Basic and Digest Access Authentication ([RFC 2617](https://datatracker.ietf.org/doc/html/rfc2617))</s>\n\n* HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields ([RFC 7615](https://datatracker.ietf.org/doc/html/rfc7615))\n\n* HTTP Digest Access Authentication ([RFC 7616](https://datatracker.ietf.org/doc/html/rfc7616))\n\n* The 'Basic' HTTP Authentication Scheme ([RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617))\n\n* Additional HTTP Status Codes ([RFC 6585](https://datatracker.ietf.org/doc/html/rfc6585))\n\n* Forwarded HTTP Extension [RFC 7239](https://datatracker.ietf.org/doc/html/rfc7239)\n\n* Prefer Header for HTTP [RFC 7240](https://datatracker.ietf.org/doc/html/rfc7240)\n\n* PATCH Method for HTTP ([RFC 5789](https://datatracker.ietf.org/doc/html/rfc5789))\n\n* JavaScript Object Notation (JSON) Patch ([RFC 6902](https://datatracker.ietf.org/doc/html/rfc6902))\n\n* Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) ([RFC 6266](https://datatracker.ietf.org/doc/html/rfc6266))\n\n* Upgrading to TLS Within HTTP/1.1 ([RFC 2817](https://datatracker.ietf.org/doc/html/rfc2817))\n\n* Transparent Content Negotiation in HTTP ([RFC 2295](https://datatracker.ietf.org/doc/html/rfc2295))\n\n* HTTP Remote Variant Selection Algorithm -- RVSA/1.0 ([RFC 2296](https://datatracker.ietf.org/doc/html/rfc2296))\n\n* HTTP State Management Mechanism ([RFC 6265](https://datatracker.ietf.org/doc/html/rfc6265))\n\n* Same-site Cookies ([Draft 7](https://datatracker.ietf.org/doc/html/rfcdraft-west-first-party-cookies-07))\n\n* HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) ([RFC 4918](https://datatracker.ietf.org/doc/html/rfc4918))\n\n* Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) ([RFC 2324](https://datatracker.ietf.org/doc/html/rfc2324))\n\nExtended information about hypermedia, WWW and how HTTP is meant to be used:\n\n* Web Linking ([RFC 5988](https://datatracker.ietf.org/doc/html/rfc5988))\n\n* Representational State Transfer [REST](http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)\n\n  * [REST APIs must be hypertext-driven](https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven)\n\n  * [Specialization](https://roy.gbiv.com/untangled/2008/specialization)\n\n  * [No REST in CMIS](https://roy.gbiv.com/untangled/2008/no-rest-in-cmis)\n\n  * [On software architecture](https://roy.gbiv.com/untangled/2008/on-software-architecture)\n\n  * [It is okay to use POST](https://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post)\n\n  * [Paper tigers and hidden dragons](https://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons)\n\n  * [Economies of scale](https://roy.gbiv.com/untangled/2008/economies-of-scale)\n\n* [Richardson Maturity Model](https://martinfowler.com/articles/richardsonMaturityModel.html)\n\n* [Test Cases for HTTP Content-Disposition header field](http://greenbytes.de/tech/tc2231/)\n\n* [Cross-Origin Resource Sharing](http://www.w3.org/TR/cors/)\n\n* [HTTP (HTML) Leaks](https://github.com/cure53/HTTPLeaks/blob/main/leak.html)\n\nOAuth 2.0:\n\n* [OAuth Working Group Specifications](https://oauth.net/specs/)\n* [OAuth 2.0 Security Best Current Practice](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics)\n* [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)\n* [Bearer Token Usage](https://datatracker.ietf.org/doc/html/rfc6750)\n* [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519)\n* [JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://datatracker.ietf.org/doc/html/rfc9068)\n* [Resource Indicators for OAuth 2.0](https://datatracker.ietf.org/doc/html/rfc8707)\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "object oriented HTTP protocol library",
    "version": "0.1.1",
    "split_keywords": [
        "http",
        "web",
        "proxy",
        "cache",
        "client",
        "server",
        "library"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "691e527138cf10fac01589bbced8621b",
                "sha256": "8a2db415997dd12bea39905d657251d0a70443b91a8075518e4e4293105960f5"
            },
            "downloads": -1,
            "filename": "httoop-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "691e527138cf10fac01589bbced8621b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 77327,
            "upload_time": "2022-12-28T01:33:24",
            "upload_time_iso_8601": "2022-12-28T01:33:24.588240Z",
            "url": "https://files.pythonhosted.org/packages/37/ec/15e07268fa3b9e8a2f06aced654e1220fd3d6332c5e4e28def1755023d6a/httoop-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "50550219c9ccc01c3cd9b9ce8cc5fd23",
                "sha256": "a0d5bacead86b5d91748c67ed02e7bb9a3a8e333c15d80eb747ac3afcf61bcd0"
            },
            "downloads": -1,
            "filename": "httoop-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "50550219c9ccc01c3cd9b9ce8cc5fd23",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 54299,
            "upload_time": "2022-12-28T01:33:26",
            "upload_time_iso_8601": "2022-12-28T01:33:26.364953Z",
            "url": "https://files.pythonhosted.org/packages/ae/2e/1799c58071cf1d1cdfa8e8de19f6ef4cec67b018caa387bf8067b2579195/httoop-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-28 01:33:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "spaceone",
    "github_project": "httoop",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "httoop"
}
        
Elapsed time: 0.02706s