@@ -5,8 +5,8 @@ class ClientResponse:
5
5
def __init__ (self , reader ):
6
6
self .content = reader
7
7
8
- def read (self , sz = - 1 ):
9
- return ( yield from self .content .read (sz ) )
8
+ async def read (self , sz = - 1 ):
9
+ return await self .content .read (sz )
10
10
11
11
def __repr__ (self ):
12
12
return "<ClientResponse %d %s>" % (self .status , self .headers )
@@ -17,30 +17,30 @@ def __init__(self, reader):
17
17
self .content = reader
18
18
self .chunk_size = 0
19
19
20
- def read (self , sz = 4 * 1024 * 1024 ):
20
+ async def read (self , sz = 4 * 1024 * 1024 ):
21
21
if self .chunk_size == 0 :
22
- line = yield from self .content .readline ()
22
+ line = await self .content .readline ()
23
23
# print("chunk line:", l)
24
24
line = line .split (b";" , 1 )[0 ]
25
25
self .chunk_size = int (line , 16 )
26
26
# print("chunk size:", self.chunk_size)
27
27
if self .chunk_size == 0 :
28
28
# End of message
29
- sep = yield from self .content .read (2 )
29
+ sep = await self .content .read (2 )
30
30
assert sep == b"\r \n "
31
31
return b""
32
- data = yield from self .content .read (min (sz , self .chunk_size ))
32
+ data = await self .content .read (min (sz , self .chunk_size ))
33
33
self .chunk_size -= len (data )
34
34
if self .chunk_size == 0 :
35
- sep = yield from self .content .read (2 )
35
+ sep = await self .content .read (2 )
36
36
assert sep == b"\r \n "
37
37
return data
38
38
39
39
def __repr__ (self ):
40
40
return "<ChunkedClientResponse %d %s>" % (self .status , self .headers )
41
41
42
42
43
- def request_raw (method , url ):
43
+ async def request_raw (method , url ):
44
44
try :
45
45
proto , dummy , host , path = url .split ("/" , 3 )
46
46
except ValueError :
@@ -55,7 +55,7 @@ def request_raw(method, url):
55
55
56
56
if proto != "http:" :
57
57
raise ValueError ("Unsupported protocol: " + proto )
58
- reader , writer = yield from asyncio .open_connection (host , port )
58
+ reader , writer = await asyncio .open_connection (host , port )
59
59
# Use protocol 1.0, because 1.1 always allows to use chunked
60
60
# transfer-encoding But explicitly set Connection: close, even
61
61
# though this should be default for 1.0, because some servers
@@ -65,22 +65,21 @@ def request_raw(method, url):
65
65
path ,
66
66
host ,
67
67
)
68
- yield from writer .awrite (query .encode ("latin-1" ))
69
- # yield from writer.aclose()
68
+ await writer .awrite (query .encode ("latin-1" ))
70
69
return reader
71
70
72
71
73
- def request (method , url ):
72
+ async def request (method , url ):
74
73
redir_cnt = 0
75
74
while redir_cnt < 2 :
76
- reader = yield from request_raw (method , url )
75
+ reader = await request_raw (method , url )
77
76
headers = []
78
- sline = yield from reader .readline ()
77
+ sline = await reader .readline ()
79
78
sline = sline .split (None , 2 )
80
79
status = int (sline [1 ])
81
80
chunked = False
82
81
while True :
83
- line = yield from reader .readline ()
82
+ line = await reader .readline ()
84
83
if not line or line == b"\r \n " :
85
84
break
86
85
headers .append (line )
@@ -92,7 +91,7 @@ def request(method, url):
92
91
93
92
if 301 <= status <= 303 :
94
93
redir_cnt += 1
95
- yield from reader .aclose ()
94
+ await reader .aclose ()
96
95
continue
97
96
break
98
97
0 commit comments