about summary refs log tree commit diff
path: root/web/atward/src/main.rs
diff options
context:
space:
mode:
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(),