Skip to content

Commit b17e9aa

Browse files
diefessondpgeorge
authored andcommitted
urequests: Add support for requests with chunked upload data.
1 parent be327a7 commit b17e9aa

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

python-ecosys/urequests/urequests.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ def json(self):
3636
def request(
3737
method, url, data=None, json=None, headers={}, stream=None, parse_headers=True, auth=None
3838
):
39+
chunked_data = data and getattr(data, "__iter__", None) and not getattr(data, "__len__", None)
40+
3941
if auth is not None:
4042
import ubinascii
4143

@@ -90,10 +92,20 @@ def request(
9092
data = ujson.dumps(json)
9193
s.write(b"Content-Type: application/json\r\n")
9294
if data:
93-
s.write(b"Content-Length: %d\r\n" % len(data))
95+
if chunked_data:
96+
s.write(b"Transfer-Encoding: chunked\r\n")
97+
else:
98+
s.write(b"Content-Length: %d\r\n" % len(data))
9499
s.write(b"Connection: close\r\n\r\n")
95100
if data:
96-
s.write(data)
101+
if chunked_data:
102+
for chunk in data:
103+
s.write(b"%x\r\n" % len(chunk))
104+
s.write(chunk)
105+
s.write(b"\r\n")
106+
s.write("0\r\n\r\n")
107+
else:
108+
s.write(data)
97109

98110
l = s.readline()
99111
# print(l)

0 commit comments

Comments
 (0)