aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http/http2
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-09-16 18:43:24 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-09-16 18:43:24 +0200
commit265f31e8782ee9da511ce4b63aa2da00221cbf66 (patch)
treec0eba50b522d1d0183b057e9cae7bf7cc38c4fc3 /netlib/http/http2
parent9b882d245052feec44fc77e102dc597d24de2b80 (diff)
downloadmitmproxy-265f31e8782ee9da511ce4b63aa2da00221cbf66.tar.gz
mitmproxy-265f31e8782ee9da511ce4b63aa2da00221cbf66.tar.bz2
mitmproxy-265f31e8782ee9da511ce4b63aa2da00221cbf66.zip
adjust http1-related code
Diffstat (limited to 'netlib/http/http2')
-rw-r--r--netlib/http/http2/__init__.py6
-rw-r--r--netlib/http/http2/connections.py28
2 files changed, 24 insertions, 10 deletions
diff --git a/netlib/http/http2/__init__.py b/netlib/http/http2/__init__.py
index e69de29b..7043d36f 100644
--- a/netlib/http/http2/__init__.py
+++ b/netlib/http/http2/__init__.py
@@ -0,0 +1,6 @@
+from __future__ import absolute_import, print_function, division
+from .connections import HTTP2Protocol
+
+__all__ = [
+ "HTTP2Protocol"
+]
diff --git a/netlib/http/http2/connections.py b/netlib/http/http2/connections.py
index 036bf68f..5220d5d2 100644
--- a/netlib/http/http2/connections.py
+++ b/netlib/http/http2/connections.py
@@ -3,8 +3,8 @@ import itertools
import time
from hpack.hpack import Encoder, Decoder
-from netlib import http, utils
-from netlib.http import models as semantics
+from ... import utils
+from .. import Headers, Response, Request, ALPN_PROTO_H2
from . import frame
@@ -36,8 +36,6 @@ class HTTP2Protocol(object):
CLIENT_CONNECTION_PREFACE = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
- ALPN_PROTO_H2 = 'h2'
-
def __init__(
self,
tcp_handler=None,
@@ -62,6 +60,7 @@ class HTTP2Protocol(object):
def read_request(
self,
+ __rfile,
include_body=True,
body_size_limit=None,
allow_empty=False,
@@ -111,7 +110,7 @@ class HTTP2Protocol(object):
port = 80 if scheme == 'http' else 443
port = int(port)
- request = http.Request(
+ request = Request(
form_in,
method,
scheme,
@@ -131,6 +130,7 @@ class HTTP2Protocol(object):
def read_response(
self,
+ __rfile,
request_method='',
body_size_limit=None,
include_body=True,
@@ -159,7 +159,7 @@ class HTTP2Protocol(object):
else:
timestamp_end = None
- response = http.Response(
+ response = Response(
(2, 0),
int(headers.get(':status', 502)),
"",
@@ -172,8 +172,16 @@ class HTTP2Protocol(object):
return response
+ def assemble(self, message):
+ if isinstance(message, Request):
+ return self.assemble_request(message)
+ elif isinstance(message, Response):
+ return self.assemble_response(message)
+ else:
+ raise ValueError("HTTP message not supported.")
+
def assemble_request(self, request):
- assert isinstance(request, semantics.Request)
+ assert isinstance(request, Request)
authority = self.tcp_handler.sni if self.tcp_handler.sni else self.tcp_handler.address.host
if self.tcp_handler.address.port != 443:
@@ -200,7 +208,7 @@ class HTTP2Protocol(object):
self._create_body(request.body, stream_id)))
def assemble_response(self, response):
- assert isinstance(response, semantics.Response)
+ assert isinstance(response, Response)
headers = response.headers.copy()
@@ -275,7 +283,7 @@ class HTTP2Protocol(object):
def check_alpn(self):
alp = self.tcp_handler.get_alpn_proto_negotiated()
- if alp != self.ALPN_PROTO_H2:
+ if alp != ALPN_PROTO_H2:
raise NotImplementedError(
"HTTP2Protocol can not handle unknown ALP: %s" % alp)
return True
@@ -405,7 +413,7 @@ class HTTP2Protocol(object):
else:
self._handle_unexpected_frame(frm)
- headers = http.Headers(
+ headers = Headers(
[[str(k), str(v)] for k, v in self.decoder.decode(header_block_fragment)]
)