diff options
| author | Aldo Cortesi <aldo@corte.si> | 2016-10-20 12:36:26 +1300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-20 12:36:26 +1300 |
| commit | 711078ba3f63257df745bb3edd80a85717e94b20 (patch) | |
| tree | d3116cd540faf01f272a0892fc6a9b83b4f6de8a /netlib/http/http1/assemble.py | |
| parent | ee56d3fae0baeef1f31a83db122dd832d4c0e07e (diff) | |
| parent | 8430f857b504a3e7406dc36e54dc32783569d0dd (diff) | |
| download | mitmproxy-711078ba3f63257df745bb3edd80a85717e94b20.tar.gz mitmproxy-711078ba3f63257df745bb3edd80a85717e94b20.tar.bz2 mitmproxy-711078ba3f63257df745bb3edd80a85717e94b20.zip | |
Merge pull request #1637 from cortesi/tatanetlib
This PR merges netlib into mitmproxy
Diffstat (limited to 'netlib/http/http1/assemble.py')
| -rw-r--r-- | netlib/http/http1/assemble.py | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/netlib/http/http1/assemble.py b/netlib/http/http1/assemble.py deleted file mode 100644 index 3d65da34..00000000 --- a/netlib/http/http1/assemble.py +++ /dev/null @@ -1,100 +0,0 @@ -import netlib.http.url -from netlib import exceptions - - -def assemble_request(request): - if request.data.content is None: - raise exceptions.HttpException("Cannot assemble flow with missing content") - head = assemble_request_head(request) - body = b"".join(assemble_body(request.data.headers, [request.data.content])) - return head + body - - -def assemble_request_head(request): - first_line = _assemble_request_line(request.data) - headers = _assemble_request_headers(request.data) - return b"%s\r\n%s\r\n" % (first_line, headers) - - -def assemble_response(response): - if response.data.content is None: - raise exceptions.HttpException("Cannot assemble flow with missing content") - head = assemble_response_head(response) - body = b"".join(assemble_body(response.data.headers, [response.data.content])) - return head + body - - -def assemble_response_head(response): - first_line = _assemble_response_line(response.data) - headers = _assemble_response_headers(response.data) - return b"%s\r\n%s\r\n" % (first_line, headers) - - -def assemble_body(headers, body_chunks): - if "chunked" in headers.get("transfer-encoding", "").lower(): - for chunk in body_chunks: - if chunk: - yield b"%x\r\n%s\r\n" % (len(chunk), chunk) - yield b"0\r\n\r\n" - else: - for chunk in body_chunks: - yield chunk - - -def _assemble_request_line(request_data): - """ - Args: - request_data (netlib.http.request.RequestData) - """ - form = request_data.first_line_format - if form == "relative": - return b"%s %s %s" % ( - request_data.method, - request_data.path, - request_data.http_version - ) - elif form == "authority": - return b"%s %s:%d %s" % ( - request_data.method, - request_data.host, - request_data.port, - request_data.http_version - ) - elif form == "absolute": - return b"%s %s://%s:%d%s %s" % ( - request_data.method, - request_data.scheme, - request_data.host, - request_data.port, - request_data.path, - request_data.http_version - ) - else: - raise RuntimeError("Invalid request form") - - -def _assemble_request_headers(request_data): - """ - Args: - request_data (netlib.http.request.RequestData) - """ - headers = request_data.headers.copy() - if "host" not in headers and request_data.scheme and request_data.host and request_data.port: - headers["host"] = netlib.http.url.hostport( - request_data.scheme, - request_data.host, - request_data.port - ) - return bytes(headers) - - -def _assemble_response_line(response_data): - return b"%s %d %s" % ( - response_data.http_version, - response_data.status_code, - response_data.reason, - ) - - -def _assemble_response_headers(response): - return bytes(response.headers) |
