Implements OpenSearch support, closes #107
This commit is contained in:
parent
ee43d8cfb1
commit
8bffb61e68
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
#? stdtmpl(subsChar = '$', metaChar = '#')
|
||||
#proc generateOpenSearchXML*(name, hostname, url: string): string =
|
||||
# result = ""
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
|
||||
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||
<ShortName>${name}</ShortName>
|
||||
<Description>Twitter search via ${hostname}</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Url type="text/html" template="${url}{searchTerms}" />
|
||||
</OpenSearchDescription>
|
||||
#end proc
|
Loading…
Reference in New Issue