kopia lustrzana https://github.com/micropython/micropython-lib
uaiohttpclient: Add support for redirects.
rodzic
5e1af0f277
commit
16c57c50f4
|
@ -59,24 +59,36 @@ def request_raw(method, url):
|
||||||
|
|
||||||
|
|
||||||
def request(method, url):
|
def request(method, url):
|
||||||
reader = yield from request_raw(method, url)
|
redir_cnt = 0
|
||||||
headers = []
|
redir_url = None
|
||||||
sline = yield from reader.readline()
|
while redir_cnt < 2:
|
||||||
protover, st, msg = sline.split(None, 2)
|
reader = yield from request_raw(method, url)
|
||||||
chunked = False
|
headers = []
|
||||||
while True:
|
sline = yield from reader.readline()
|
||||||
line = yield from reader.readline()
|
protover, status, msg = sline.split(None, 2)
|
||||||
if not line or line == b"\r\n":
|
status = int(status)
|
||||||
break
|
chunked = False
|
||||||
headers.append(line)
|
while True:
|
||||||
if line.startswith(b"Transfer-Encoding:"):
|
line = yield from reader.readline()
|
||||||
if b"chunked" in line:
|
if not line or line == b"\r\n":
|
||||||
chunked = True
|
break
|
||||||
|
headers.append(line)
|
||||||
|
if line.startswith(b"Transfer-Encoding:"):
|
||||||
|
if b"chunked" in line:
|
||||||
|
chunked = True
|
||||||
|
elif line.startswith(b"Location:"):
|
||||||
|
url = line.rstrip().split(None, 1)[1].decode("latin-1")
|
||||||
|
|
||||||
|
if 301 <= status <= 303:
|
||||||
|
redir_cnt += 1
|
||||||
|
yield from reader.close()
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
|
||||||
if chunked:
|
if chunked:
|
||||||
resp = ChunkedClientResponse(reader)
|
resp = ChunkedClientResponse(reader)
|
||||||
else:
|
else:
|
||||||
resp = ClientResponse(reader)
|
resp = ClientResponse(reader)
|
||||||
resp.status = int(st)
|
resp.status = status
|
||||||
resp.headers = headers
|
resp.headers = headers
|
||||||
return resp
|
return resp
|
||||||
|
|
Ładowanie…
Reference in New Issue