about summary refs log tree commit diff
path: root/web/atward/src/main.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-05-11T21·58+0200
committertazjin <mail@tazj.in>2021-05-11T22·45+0000
commitcb497a0ccae3f90122c6c8d6d99addded11cd501 (patch)
treee84f71eb970b5e02a908eacedc1acd713a459cce /web/atward/src/main.rs
parent99d11bef5fd32aa5dfb3b091fea3e6b15fc6ac26 (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>
Diffstat (limited to 'web/atward/src/main.rs')
-rw-r--r--web/atward/src/main.rs11
1 files changed, 11 insertions, 0 deletions
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(),