diff --git a/web/atward/src/index.html b/web/atward/src/index.html
index c9a7c494e..286bc6e54 100644
--- a/web/atward/src/index.html
+++ b/web/atward/src/index.html
@@ -4,6 +4,7 @@
+
TVL Search
diff --git a/web/atward/src/main.rs b/web/atward/src/main.rs
index 44ab4d29c..04beb02cd 100644
--- a/web/atward/src/main.rs
+++ b/web/atward/src/main.rs
@@ -113,6 +113,13 @@ fn dispatch(handlers: &[Handler], query: &Query) -> Option {
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 000000000..6033987f5
--- /dev/null
+++ b/web/atward/src/opensearch.xml
@@ -0,0 +1,8 @@
+
+ TVL
+ The Virus Lounge Search
+ UTF-8
+
+
+
+