def spdy_siteget(spdy1, spdy2, site): resp = {'text': '', 'assetlist': []} def site_start(status, phrase, headers): if status != '200': print 'Connection Failed: ' + site def site_body(chunk): resp['text'] += chunk def site_stop(trailers): assetlist = json.loads(resp['text'])['list'] print 'SPDY:', for asset in assetlist: spdy_assetget(spdy1, spdy2, asset, spdyclient) print stop() t0 = time.time() spdyclient = SpdyClient() get = spdyclient.exchange() uri = spdy1 + '/site/' + str(site) stream = get.request_start('GET', uri, []) get._streams[stream].on('response_start', site_start) get._streams[stream].on('response_body', site_body) get._streams[stream].on('response_done', site_stop) get._streams[stream].request_done(stream, []) run() return time.time() - t0
def http_siteget(http1, http2, site): resp = {'text': '', 'assetlist': []} def site_start(status, phrase, headers): if status != '200': print 'Connection Failed: ' + site def site_body(chunk): resp['text'] += chunk def site_stop(trailers): print 'HTTP:', assetlist = json.loads(resp['text'])['list'] for asset in assetlist: http_assetget(http1, http2, asset, httpclient) print stop() t0 = time.time() httpclient = HttpClient() get = httpclient.exchange() get.on('response_start', site_start) get.on('response_body', site_body) get.on('response_done', site_stop) uri = http1 + '/site/' + str(site) get.request_start('GET', uri, []) get.request_done([]) run() return time.time() - t0
def hello(host): resp = {'text': '', 'sitelist': []} def hello_start(status, phrase, headers): if status == '200': print 'Connection Successful!\nDownloading sitelist.' def hello_body(chunk): resp['text'] += chunk def hello_stop(trailers): resp['sitelist'] = json.loads(resp['text']) stop() def hello_err(err): print 'Connection could not be completed...' stop() exit() httpclient = HttpClient() httpclient.connect_timeout = 5 hello = httpclient.exchange() hello.on('response_start', hello_start) hello.on('response_body', hello_body) hello.on('response_done', hello_stop) hello.on('error', hello_err) uri = host + '/hello' hello.request_start('GET', uri, []) hello.request_done([]) run() return resp['sitelist']
def test_client(request_uri, out, err): "A simple demonstration of a client." from thor.loop import stop, run c = HttpClient() c.connect_timeout = 5 x = c.exchange() @on(x) def response_start(status, phrase, headers): "Print the response headers." print "HTTP/%s %s %s" % (x.res_version, status, phrase) print "\n".join(["%s:%s" % header for header in headers]) print @on(x) def error(err_msg): if err_msg: err("*** ERROR: %s (%s)\n" % (err_msg.desc, err_msg.detail) ) stop() x.on('response_body', out) @on(x) def response_done(trailers): stop() x.request_start("GET", request_uri, []) x.request_done([]) run()
def test_client(request_uri, out, err): # pragma: no coverage "A simple demonstration of a client." from thor.loop import stop, run c = HttpClient() c.connect_timeout = 5 c.careful = False x = c.exchange() @on(x) def response_start(status, phrase, headers): "Print the response headers." out(b"HTTP/%s %s %s\n" % (x.res_version, status, phrase)) out(b"\n".join([b"%s:%s" % header for header in headers])) print() print() @on(x) def error(err_msg): if err_msg: err("\033[1;31m*** ERROR:\033[0;39m %s (%s)\n" % (err_msg.desc, err_msg.detail)) if not err_msg.client_recoverable: stop() x.on('response_body', out) @on(x) def response_done(trailers): thor.schedule(1, stop) x.request_start(b"GET", request_uri, []) x.request_done([]) run()
def collect(host, data): def collect_start(status, phrase, headers): if status != '200': print 'Uploading data...' def collect_body(chunk): pass def collect_stop(trailers): stop() httpclient = HttpClient() collect = httpclient.exchange() collect.on('response_start', collect_start) collect.on('response_body', collect_body) collect.on('response_done', collect_stop) collect.request_start('POST', host, []) collect.request_body(data) collect.request_done([]) run() return "Upload Complete"
else: args = why err_id = args[0] err_str = args[1] self._error_sent = True self.unregister_fd() self.emit("connect_error", err_type, err_id, err_str) if close: self.sock.close() if __name__ == "__main__": # quick demo server from thor.loop import run, stop server = TcpServer(b"localhost", int(sys.argv[-1])) def handle_conn(conn): conn.pause(False) def echo(chunk): if chunk.strip().lower() in ["quit", "stop"]: stop() else: conn.write("-> %s" % chunk) conn.on("data", echo) server.on("connect", handle_conn) run()
@on(x, 'request_body') def body(chunk): up['inp'] += chunk @on(x, 'request_done') def done(trailers): with open(os.path.join(conf.outdir, conf.outfile), 'a') as f: f.write(up['inp']) f.write('\n') f.close() print 'finished capture' x.response_start(200, 'OK', []) x.response_done([]) capture_serve = HttpServer(host='', port=conf.capture_port) capture_serve.on('exchange', capture_handler) if __name__ == '__main__': args = get_args() try: os.mkdir(conf.outdir) except OSError: pass capture_main(conf) spdy_main(conf) http_main(conf) run()