77import urllib .parse
88from http .client import BadStatusLine
99
10- from asyncio import get_event_loop , open_connection , coroutine
10+ import asyncio
1111
1212
1313class Request :
@@ -34,13 +34,13 @@ def __init__(self, url, verbose=True):
3434 self .reader = None
3535 self .writer = None
3636
37- @coroutine
37+ @asyncio . coroutine
3838 def connect (self ):
3939 if self .verbose :
4040 print ('* Connecting to %s:%s using %s' %
4141 (self .hostname , self .port , 'ssl' if self .ssl else 'tcp' ),
4242 file = sys .stderr )
43- self .reader , self .writer = yield from open_connection (self .hostname ,
43+ self .reader , self .writer = yield from asyncio . open_connection (self .hostname ,
4444 self .port ,
4545 ssl = self .ssl )
4646 if self .verbose :
@@ -51,20 +51,22 @@ def connect(self):
5151 def putline (self , line ):
5252 self .writer .write (line .encode ('latin-1' ) + b'\r \n ' )
5353
54- @coroutine
54+ @asyncio . coroutine
5555 def send_request (self ):
5656 request = '%s %s %s' % (self .method , self .full_path , self .http_version )
57- if self .verbose : print ('>' , request , file = sys .stderr )
57+ if self .verbose :
58+ print ('>' , request , file = sys .stderr )
5859 self .putline (request )
5960 if 'host' not in {key .lower () for key , _ in self .headers }:
6061 self .headers .insert (0 , ('Host' , self .netloc ))
6162 for key , value in self .headers :
6263 line = '%s: %s' % (key , value )
63- if self .verbose : print ('>' , line , file = sys .stderr )
64+ if self .verbose :
65+ print ('>' , line , file = sys .stderr )
6466 self .putline (line )
6567 self .putline ('' )
6668
67- @coroutine
69+ @asyncio . coroutine
6870 def get_response (self ):
6971 response = Response (self .reader , self .verbose )
7072 yield from response .read_headers ()
@@ -81,14 +83,15 @@ def __init__(self, reader, verbose=True):
8183 self .reason = None # 'Ok'
8284 self .headers = [] # [('Content-Type', 'text/html')]
8385
84- @coroutine
86+ @asyncio . coroutine
8587 def getline (self ):
8688 return (yield from self .reader .readline ()).decode ('latin-1' ).rstrip ()
8789
88- @coroutine
90+ @asyncio . coroutine
8991 def read_headers (self ):
9092 status_line = yield from self .getline ()
91- if self .verbose : print ('<' , status_line , file = sys .stderr )
93+ if self .verbose :
94+ print ('<' , status_line , file = sys .stderr )
9295 status_parts = status_line .split (None , 2 )
9396 if len (status_parts ) != 3 :
9497 raise BadStatusLine (status_line )
@@ -98,13 +101,15 @@ def read_headers(self):
98101 header_line = yield from self .getline ()
99102 if not header_line :
100103 break
101- if self .verbose : print ('<' , header_line , file = sys .stderr )
104+ if self .verbose :
105+ print ('<' , header_line , file = sys .stderr )
102106 # TODO: Continuation lines.
103107 key , value = header_line .split (':' , 1 )
104108 self .headers .append ((key , value .strip ()))
105- if self .verbose : print (file = sys .stderr )
109+ if self .verbose :
110+ print (file = sys .stderr )
106111
107- @coroutine
112+ @asyncio . coroutine
108113 def read (self ):
109114 nbytes = None
110115 for key , value in self .headers :
@@ -118,7 +123,7 @@ def read(self):
118123 return body
119124
120125
121- @coroutine
126+ @asyncio . coroutine
122127def fetch (url , verbose = True ):
123128 request = Request (url , verbose )
124129 yield from request .connect ()
@@ -129,7 +134,7 @@ def fetch(url, verbose=True):
129134
130135
131136def main ():
132- loop = get_event_loop ()
137+ loop = asyncio . get_event_loop ()
133138 try :
134139 body = loop .run_until_complete (fetch (sys .argv [1 ], '-v' in sys .argv ))
135140 finally :
0 commit comments