aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http/semantics.py
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-27 09:36:50 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-27 11:48:38 +0200
commit827fe824d97d96779512c8a4032d9b30d516d63f (patch)
treea271611cf4ea1a91372d57428a2c49ffc2b74461 /netlib/http/semantics.py
parentfb482172241b6235da083f6dbf154b641772a4fc (diff)
downloadmitmproxy-827fe824d97d96779512c8a4032d9b30d516d63f.tar.gz
mitmproxy-827fe824d97d96779512c8a4032d9b30d516d63f.tar.bz2
mitmproxy-827fe824d97d96779512c8a4032d9b30d516d63f.zip
move code from mitmproxy to netlib
Diffstat (limited to 'netlib/http/semantics.py')
-rw-r--r--netlib/http/semantics.py49
1 files changed, 47 insertions, 2 deletions
diff --git a/netlib/http/semantics.py b/netlib/http/semantics.py
index 9e13edaa..63b6beb9 100644
--- a/netlib/http/semantics.py
+++ b/netlib/http/semantics.py
@@ -20,7 +20,11 @@ class Request(object):
httpversion,
headers,
body,
+ timestamp_start=None,
+ timestamp_end=None,
):
+ assert isinstance(headers, odict.ODictCaseless) or not headers
+
self.form_in = form_in
self.method = method
self.scheme = scheme
@@ -30,17 +34,30 @@ class Request(object):
self.httpversion = httpversion
self.headers = headers
self.body = body
+ self.timestamp_start = timestamp_start
+ self.timestamp_end = timestamp_end
def __eq__(self, other):
- return self.__dict__ == other.__dict__
+ try:
+ self_d = [self.__dict__[k] for k in self.__dict__ if k not in ('timestamp_start', 'timestamp_end')]
+ other_d = [other.__dict__[k] for k in other.__dict__ if k not in ('timestamp_start', 'timestamp_end')]
+ return self_d == other_d
+ except:
+ return False
def __repr__(self):
return "Request(%s - %s, %s)" % (self.method, self.host, self.path)
@property
def content(self):
+ # TODO: remove deprecated getter
return self.body
+ @content.setter
+ def content(self, content):
+ # TODO: remove deprecated setter
+ self.body = content
+
class EmptyRequest(Request):
def __init__(self):
@@ -67,24 +84,52 @@ class Response(object):
headers,
body,
sslinfo=None,
+ timestamp_start=None,
+ timestamp_end=None,
):
+ assert isinstance(headers, odict.ODictCaseless) or not headers
+
self.httpversion = httpversion
self.status_code = status_code
self.msg = msg
self.headers = headers
self.body = body
self.sslinfo = sslinfo
+ self.timestamp_start = timestamp_start
+ self.timestamp_end = timestamp_end
def __eq__(self, other):
- return self.__dict__ == other.__dict__
+ try:
+ self_d = [self.__dict__[k] for k in self.__dict__ if k not in ('timestamp_start', 'timestamp_end')]
+ other_d = [other.__dict__[k] for k in other.__dict__ if k not in ('timestamp_start', 'timestamp_end')]
+ return self_d == other_d
+ except:
+ return False
def __repr__(self):
return "Response(%s - %s)" % (self.status_code, self.msg)
@property
def content(self):
+ # TODO: remove deprecated getter
return self.body
+ @content.setter
+ def content(self, content):
+ # TODO: remove deprecated setter
+ self.body = content
+
+ @property
+ def code(self):
+ # TODO: remove deprecated getter
+ return self.status_code
+
+ @code.setter
+ def code(self, code):
+ # TODO: remove deprecated setter
+ self.status_code = code
+
+
def is_valid_port(port):
if not 0 <= port <= 65535: