Odjezdova-tabule-MHD/server/api.py

39 lines
1 KiB
Python

import threading
from wsgiref.simple_server import make_server, WSGIRequestHandler
from departures import Departure
from bottle import route, error, run, get, ServerAdapter, static_file
class Server(ServerAdapter):
server = None
def run(self, handler):
if self.quiet:
class QuietHandler(WSGIRequestHandler):
def log_request(self, *args, **kw):
pass
self.options['handler_class'] = QuietHandler
self.server = make_server(self.host, self.port, handler, **self.options)
self.server.serve_forever()
def stop(self):
self.server.shutdown()
@route('/departures/<stop_id>')
def index(stop_id: int):
return {'departures': Departure.get(stop_id)}
@get("/")
def static():
return static_file("index.html", root="static")
@error(404)
def error404(err):
return ''
class API:
def __init__(self, main):
self.server = Server(host=main.config["http"]["host"], port=main.config["http"]["port"])
self.thread = threading.Thread(target=self.start)
self.thread.start()
def start(self):
run(quiet=True, server=self.server)