diff options
Diffstat (limited to 'app/server.py')
| -rw-r--r-- | app/server.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/server.py b/app/server.py new file mode 100644 index 0000000..785e30f --- /dev/null +++ b/app/server.py @@ -0,0 +1,31 @@ +from typing import Any +import bottle as _bottle # type: ignore +from tinydb import Query + +from app.database import database_manager + +bottle: Any = _bottle + + +@bottle.route("/<feed_id>") +def index(feed_id: str): + if database_manager.db is None: + raise Exception("Database is not initialized") + + Q = Query() + res = database_manager.db.search(Q.feed_id == feed_id) + if len(res) == 0: + bottle.abort(400, f"No feed found with id {feed_id}") + + if len(res) > 1: + bottle.abort(400, f"Weird number of feeds found with id {feed_id}: {len(res)}") + + bottle.response.set_header("content-type", "application/xml") + + feed: Any = res[0] # type: ignore + feed_xml: str = feed["feed_xml"] + return feed_xml + + +def run_web_server(host: str, port: int): + bottle.run(host=host, port=port) |
