@@ -29,9 +29,15 @@ def create(self):
2929class HTTPCollector :
3030 def __init__ (self ):
3131 self .messages = BigArray ()
32+ self .extendedArguments = {}
33+
34+ def setExtendedArguments (self , arguments ):
35+ self .extendedArguments = arguments
3236
3337 def collectRequest (self , requestMessage , responseMessage , startTime = None , endTime = None ):
34- self .messages .append (RawPair (requestMessage , responseMessage , startTime , endTime ))
38+ self .messages .append (RawPair (requestMessage , responseMessage ,
39+ startTime = startTime , endTime = endTime ,
40+ extendedArguments = self .extendedArguments ))
3541
3642 def obtain (self ):
3743 return {"log" : {
@@ -41,31 +47,37 @@ def obtain(self):
4147 }}
4248
4349class RawPair :
44- def __init__ (self , request , response , startTime = None , endTime = None ):
50+ def __init__ (self , request , response , startTime = None , endTime = None , extendedArguments = None ):
4551 self .request = request
4652 self .response = response
4753 self .startTime = startTime
4854 self .endTime = endTime
55+ self .extendedArguments = extendedArguments or {}
4956
5057 def toEntry (self ):
51- return Entry (request = Request .parse (self .request ), response = Response .parse (self .response ), startTime = self .startTime , endTime = self .endTime )
58+ return Entry (request = Request .parse (self .request ), response = Response .parse (self .response ),
59+ startTime = self .startTime , endTime = self .endTime ,
60+ extendedArguments = self .extendedArguments )
5261
5362class Entry :
54- def __init__ (self , request , response , startTime , endTime ):
63+ def __init__ (self , request , response , startTime , endTime , extendedArguments ):
5564 self .request = request
5665 self .response = response
5766 self .startTime = startTime or 0
5867 self .endTime = endTime or 0
68+ self .extendedArguments = extendedArguments
5969
6070 def toDict (self ):
61- return {
71+ out = {
6272 "request" : self .request .toDict (),
6373 "response" : self .response .toDict (),
6474 "cache" : {},
65- "timings" : [] ,
75+ "timings" : {} ,
6676 "time" : int (1000 * (self .endTime - self .startTime )),
6777 "startedDateTime" : "%s%s" % (datetime .datetime .fromtimestamp (self .startTime ).isoformat (), time .strftime ("%z" )) if self .startTime else None
6878 }
79+ out .update (self .extendedArguments )
80+ return out
6981
7082class Request :
7183 def __init__ (self , method , path , httpVersion , headers , postBody = None , raw = None , comment = None ):
@@ -130,9 +142,9 @@ def __init__(self, httpVersion, status, statusText, headers, content, raw=None,
130142 @classmethod
131143 def parse (cls , raw ):
132144 altered = raw
133- comment = None
145+ comment = ""
134146
135- if altered .startswith ("HTTP response [" ):
147+ if altered .startswith ("HTTP response [" ) or altered . startswith ( "HTTP redirect [" ) :
136148 io = StringIO .StringIO (raw )
137149 first_line = io .readline ()
138150 parts = cls .extract_status .search (first_line )
0 commit comments