]> code.delx.au - learning/blob - exercise2.py
Learning HTTP
[learning] / exercise2.py
1 #!/usr/bin/python
2
3 import http.server
4
5 COUNTER = 0
6
7 def main():
8 listen_address = ('localhost', 8000)
9 request_handler = MyRequestHandler
10 server = http.server.HTTPServer(listen_address, request_handler)
11 server.serve_forever()
12
13 class MyRequestHandler(http.server.BaseHTTPRequestHandler):
14 def do_GET(self):
15 if not self.path.endswith('.html'):
16 self.send_response(404)
17 self.end_headers()
18 self.write('File not found')
19 return
20
21 global COUNTER
22 self.send_response(200)
23 self.send_header('Content-type', 'text/html')
24 self.end_headers()
25 self.write('<html>')
26 self.write('<head><title>My web server!</title></head>')
27 self.write('<body>')
28 self.write('Hi there!<br>')
29 self.write('You requested: ' + self.path + '<br>')
30 self.write('You are using this client: ' + self.headers.get('user-agent') + '<br>')
31 self.write(f'We have had <b>{COUNTER}</b> visitors today')
32 COUNTER = COUNTER + 1
33 self.write('</body>')
34 self.write('</html>')
35
36 def write(self, text):
37 self.wfile.write(text.encode('utf-8'))
38
39 if __name__ == '__main__':
40 main()