def parse(msg): """ Helper method for parsing a Mongrel2 request string and returning a new `MongrelRequest` instance. """ sender, conn_id, path, rest = msg.split(' ', 3) headers, rest = tnetstring.pop(rest) body, _ = tnetstring.pop(rest) if type(headers) is str: headers = json.loads(headers) return MongrelRequest(sender, conn_id, path, headers, body)
def test_roundtrip_format_unicode(self): for _ in xrange(500): v = get_random_object(unicode=True) self.assertEqual( v, tnetstring.loads(tnetstring.dumps(v, "utf8"), "utf8")) self.assertEqual((v, ""), tnetstring.pop(tnetstring.dumps(v, "utf16"), "utf16"))
def test_roundtrip_format_random(self): for _ in xrange(500): v = get_random_object() self.assertEqual(v, tnetstring.loads(tnetstring.dumps(v))) self.assertEqual((v, ""), tnetstring.pop(tnetstring.dumps(v)))
def test_roundtrip_format_examples(self): for data, expect in FORMAT_EXAMPLES.items(): self.assertEqual(expect, tnetstring.loads(data)) self.assertEqual(expect, tnetstring.loads(tnetstring.dumps(expect))) self.assertEqual((expect, ""), tnetstring.pop(data))
} else: return {"mimeType": content_type, "size": 0} def format_redirect_url(response): return response.headers.get_first("location", "") if __name__ == '__main__': if len(sys.argv) < 3: print "usage: %s input_dump_file output_har_file" % sys.argv[0] sys.exit(0) data = open(sys.argv[1]).read() reminder = data flows = [] discarded = 0 while reminder: obj, reminder = tnetstring.pop(reminder) f = flow.Flow._from_state(obj) if (f.response): flows.append(f) else: discarded += 1 if discarded: print "discarding %d flows without valid responses" % discarded har = create_har(flows) json.dump(har, open(sys.argv[2], 'w'))
def test_roundtrip_format_unicode(self): for _ in xrange(500): v = get_random_object(unicode=True) self.assertEqual(v,tnetstring.loads(tnetstring.dumps(v,"utf8"),"utf8")) self.assertEqual((v,""),tnetstring.pop(tnetstring.dumps(v,"utf16"),"utf16"))
def test_roundtrip_format_random(self): for _ in xrange(500): v = get_random_object() self.assertEqual(v,tnetstring.loads(tnetstring.dumps(v))) self.assertEqual((v,""),tnetstring.pop(tnetstring.dumps(v)))
def test_roundtrip_format_examples(self): for data, expect in FORMAT_EXAMPLES.items(): self.assertEqual(expect,tnetstring.loads(data)) self.assertEqual(expect,tnetstring.loads(tnetstring.dumps(expect))) self.assertEqual((expect,""),tnetstring.pop(data))