diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-09-03 00:12:19 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-09-10 19:01:00 +0300 |
| commit | 3a4cd4935dafe6d445daac3b7d6ced409f99aa23 (patch) | |
| tree | 751e4ca259f7f35556fdfabc78dfacdedbad9ac5 /app/server.py | |
| parent | c13734f56e9b01a61cfb66019a71d46c3dfe6f86 (diff) | |
Add web server
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) |
