Skip to content

Commit 55aafec

Browse files
committed
Add gzip example
1 parent f842536 commit 55aafec

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

src/micropython/hello_gzip.py

+62-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,62 @@
1-
# TODO
1+
try:
2+
import usocket as socket
3+
except:
4+
import socket
5+
6+
okResponse = b"""\
7+
HTTP/1.1 200 OK
8+
9+
%s
10+
"""
11+
12+
badResponse = b"""\
13+
HTTP/1.1 400 Bad Request
14+
Content-Type: text/html; charset=utf-8
15+
16+
<h1>400 Bad Request</h1>
17+
"""
18+
19+
def main():
20+
headers = b"""\
21+
HTTP/1.1 200 OK
22+
Content-Type: text/html; charset=utf-8
23+
Content-Encoding: gzip
24+
Content-Length: %d
25+
26+
"""
27+
28+
# read the gzipped html
29+
f = open('hello_world.min.html.gz','rb')
30+
html = f.read()
31+
f.close()
32+
33+
# set the content length
34+
headers = headers % len(html)
35+
36+
# create server
37+
s = socket.socket()
38+
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
39+
s.bind(('0.0.0.0', 80))
40+
s.listen(5)
41+
print("Listening for http requests on port 80")
42+
43+
# process requests
44+
while True:
45+
client_s, client_addr = s.accept()
46+
47+
req = client_s.recv(4096)
48+
49+
print("Request:\n%s\n" % req)
50+
51+
# grab some variables from request header
52+
# eg. GET /on HTTP/1.1
53+
method, path, protocol = req.split(b'\r\n',1)[0].split()
54+
55+
if path == b'/':
56+
client_s.send(headers)
57+
client_s.sendall(html)
58+
else:
59+
client_s.send(badResponse)
60+
client_s.close()
61+
62+
main()

0 commit comments

Comments
 (0)