summaryrefslogtreecommitdiff
path: root/utab/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to 'utab/__main__.py')
-rw-r--r--utab/__main__.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/utab/__main__.py b/utab/__main__.py
index 578c9d6..fef3655 100644
--- a/utab/__main__.py
+++ b/utab/__main__.py
@@ -178,6 +178,28 @@ def delete_site(url):
return "No site with such URL exists", 403
+@app.route("/search")
+def search():
+ # [/engine_keyword ]query
+ query: str = request.args.get("q").strip()
+ words = query.split(" ")
+ if not words:
+ return abort(400)
+ if words[0].startswith("/"):
+ try:
+ engine = config["engines"][words[0][1:]] # get engine from keyword
+ query = " ".join(words[1:]) # strip engine from query
+ except KeyError:
+ engine = config["engines"][config["default_engine"]]
+ else:
+ try:
+ engine = config["engines"][config["default_engine"]]
+ except (KeyError, IndexError):
+ return "No engines defined", 403
+
+ return redirect(engine["url"].replace("{{query}}", query), 302)
+
+
@app.route("/css/<string:filename>")
def serve_css(filename):
# serve static CSS because browsers forbid file:// scheme