39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
import jsonpickle
|
|
import threading
|
|
import time
|
|
|
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
|
|
PORT=8080
|
|
|
|
class ArrivalsServer:
|
|
def __init__(self, get_arrivals):
|
|
global _get_arrivals
|
|
_get_arrivals = get_arrivals
|
|
|
|
class Server(BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
request_path = self.path
|
|
arrivals = _get_arrivals()
|
|
|
|
print("Request: ", request_path)
|
|
|
|
self.send_response(200)
|
|
self.send_header("Content-type", "application/json")
|
|
self.end_headers()
|
|
|
|
ts = time.time_ns()
|
|
data = jsonpickle.encode(arrivals)
|
|
|
|
self.wfile.write(f'{{ "timestamp": {ts}, "data": {data}}}'.encode("utf-8"))
|
|
|
|
do_POST = do_GET
|
|
do_PUT = do_GET
|
|
do_DELETE = do_GET
|
|
|
|
def start(self) -> None:
|
|
print('HTTP server listening on Port %s' % PORT)
|
|
server = HTTPServer(('', PORT), self.Server)
|
|
_thread = threading.Thread(target = server.serve_forever)
|
|
_thread.start()
|