aboutsummaryrefslogtreecommitdiffstats
path: root/app/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/server.py')
-rw-r--r--app/server.py31
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)