diff options
author | Vincent Ambo <mail@tazj.in> | 2021-05-11T21·58+0200 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2021-05-11T22·45+0000 |
commit | cb497a0ccae3f90122c6c8d6d99addded11cd501 (patch) | |
tree | e84f71eb970b5e02a908eacedc1acd713a459cce | |
parent | 99d11bef5fd32aa5dfb3b091fea3e6b15fc6ac26 (diff) |
feat(atward): Serve OpenSearch XML file to support Firefox r/2579
Firefox users can not easily add search engines to the browser unless the page serves an OpenSearch description. This CL adds said description according to the documentation: https://developer.mozilla.org/en-US/docs/Web/OpenSearch Change-Id: I358c5940304f4abd9e45dd72a64e46d3ce44b3e3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3105 Tested-by: BuildkiteCI Reviewed-by: cynthia <cynthia@tvl.fyi>
-rw-r--r-- | web/atward/src/index.html | 1 | ||||
-rw-r--r-- | web/atward/src/main.rs | 11 | ||||
-rw-r--r-- | web/atward/src/opensearch.xml | 8 |
3 files changed, 20 insertions, 0 deletions
diff --git a/web/atward/src/index.html b/web/atward/src/index.html index c9a7c494e97b..286bc6e546ad 100644 --- a/web/atward/src/index.html +++ b/web/atward/src/index.html @@ -4,6 +4,7 @@ <meta name="description" content="The Virus Lounge"> <link rel="stylesheet" type="text/css" href="https://tvl.fyi/static/tazjin.css" media="all"> <link rel="icon" type="image/webp" href="https://tvl.fyi/static/favicon.webp"> +<link rel="search" type="application/opensearchdescription+xml" title="TVL Search" href="https://at.tvl.fyi/opensearch.xml"> <title>TVL Search</title> <body class="light"> <header> diff --git a/web/atward/src/main.rs b/web/atward/src/main.rs index 44ab4d29c24b..04beb02cd5d6 100644 --- a/web/atward/src/main.rs +++ b/web/atward/src/main.rs @@ -113,6 +113,13 @@ fn dispatch(handlers: &[Handler], query: &Query) -> Option<String> { None } +/// Return the opensearch.xml file which is required for adding atward +/// as a search engine in Firefox. +fn opensearch() -> Response { + Response::text(include_str!("opensearch.xml")) + .with_unique_header("Content-Type", "application/opensearchdescription+xml") +} + /// Render the atward index page which gives users some information /// about how to use the service. fn index() -> Response { @@ -133,6 +140,10 @@ fn main() { rouille::start_server(&address, move |request| { rouille::log(&request, std::io::stderr(), || { + if request.url() == "/opensearch.xml" { + return opensearch(); + } + let query = match Query::from_request(&request) { Some(q) => q, None => return index(), diff --git a/web/atward/src/opensearch.xml b/web/atward/src/opensearch.xml new file mode 100644 index 000000000000..6033987f5b4b --- /dev/null +++ b/web/atward/src/opensearch.xml @@ -0,0 +1,8 @@ +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> + <ShortName>TVL</ShortName> + <Description>The Virus Lounge Search</Description> + <InputEncoding>UTF-8</InputEncoding> + <Url type="text/html" template="https://at.tvl.fyi/"> + <Param name="q" value="{searchTerms}"/> + </Url> +</OpenSearchDescription> |