From 8bffb61e681dbe5cb36d9f6311f5cc7dd0185c33 Mon Sep 17 00:00:00 2001 From: Kadin Buckton Date: Fri, 3 Jan 2020 09:47:57 -0500 Subject: [PATCH] Implements OpenSearch support, closes #107 --- src/routes/search.nim | 11 +++++++++++ src/views/general.nim | 2 ++ src/views/opensearch.nimf | 12 ++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/views/opensearch.nimf diff --git a/src/routes/search.nim b/src/routes/search.nim index 67a91ea..602eea9 100644 --- a/src/routes/search.nim +++ b/src/routes/search.nim @@ -6,6 +6,8 @@ import router_utils import ".."/[query, types, api, agents] import ../views/[general, search] +include "../views/opensearch.nimf" + export search proc createSearchRouter*(cfg: Config) = @@ -33,3 +35,12 @@ proc createSearchRouter*(cfg: Config) = get "/hashtag/@hash": redirect("/search?q=" & encodeUrl("#" & @"hash")) + + get "/opensearch": + var url = "" + if cfg.useHttps: + url = "https://" & cfg.hostname & "/search?q=" + else: + url = "http://" & cfg.hostname & "/search?q=" + resp Http200, {"Content-Type": "application/opensearchdescription+xml"}, + generateOpenSearchXML(cfg.title, cfg.hostname, url) diff --git a/src/views/general.nim b/src/views/general.nim index 58edace..245b52d 100644 --- a/src/views/general.nim +++ b/src/views/general.nim @@ -43,6 +43,8 @@ proc renderHead*(prefs: Prefs; cfg: Config; titleText=""; desc=""; video=""; link(rel="icon", type="image/png", sizes="16x16", href="/favicon-16x16.png") link(rel="manifest", href="/site.webmanifest") link(rel="mask-icon", href="/safari-pinned-tab.svg", color="#ff6c60") + link(rel="search", type="application/opensearchdescription+xml", title=cfg.title, + href="http://localhost:8080/opensearch") if prefs.hlsPlayback: script(src="/js/hls.light.min.js") diff --git a/src/views/opensearch.nimf b/src/views/opensearch.nimf new file mode 100644 index 0000000..4b51c2a --- /dev/null +++ b/src/views/opensearch.nimf @@ -0,0 +1,12 @@ +#? stdtmpl(subsChar = '$', metaChar = '#') +#proc generateOpenSearchXML*(name, hostname, url: string): string = +# result = "" + + + ${name} + Twitter search via ${hostname} + UTF-8 + + +#end proc