diff options
Diffstat (limited to 'utab/__main__.py')
-rw-r--r-- | utab/__main__.py | 22 |
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 |