summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/templates/simple/opensearch.xml27
-rwxr-xr-xsearx/webapp.py12
-rw-r--r--tests/unit/test_webapp.py4
3 files changed, 21 insertions, 22 deletions
diff --git a/searx/templates/simple/opensearch.xml b/searx/templates/simple/opensearch.xml
index 230f327a5..212cecc80 100644
--- a/searx/templates/simple/opensearch.xml
+++ b/searx/templates/simple/opensearch.xml
@@ -1,22 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
-<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>{{ instance_name }}</ShortName>
- <Description>a privacy-respecting, hackable metasearch engine</Description>
+ <LongName>SearXNG metasearch</LongName>
+ <Description>SearXNG is a metasearch engine that respects your privacy.</Description>
<InputEncoding>UTF-8</InputEncoding>
- <Image>{{ url_for('static', filename='img/favicon.png', _external=True) }}</Image>
- <LongName>searx metasearch</LongName>
- {% if opensearch_method == 'get' %}
- <Url rel="results" type="text/html" method="get" template="{{ url_for('search', _external=True) }}?q={searchTerms}"/>
+ <Image type="image/png">{{ url_for('static', filename='img/favicon.png', _external=True) }}</Image>
+ {% if opensearch_method == 'GET' %}
+ <Url rel="results" type="text/html" method="{{ opensearch_method }}" template="{{ url_for('search', _external=True) }}?q={searchTerms}"/>
{% else %}
- <Url rel="results" type="text/html" method="post" template="{{ url_for('search', _external=True) }}">
- <Param name="q" value="{searchTerms}" />
- </Url>
+ <Url rel="results" type="text/html" method="{{ opensearch_method }}" template="{{ url_for('search', _external=True) }}">
+ <Param name="q" value="{searchTerms}" />
+ </Url>
{% endif %}
{% if autocomplete %}
- <Url rel="suggestions" type="application/x-suggestions+json" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
+ <Url rel="suggestions" type="application/x-suggestions+json" method="{{ opensearch_method }}" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
{% endif %}
-
- <Url type="application/opensearchdescription+xml"
- rel="self"
- template="{{ opensearch_url }}" />
+ <Url rel="self" type="application/opensearchdescription+xml" method="{{ opensearch_method }}" template="{{ opensearch_url }}" />
+ <Query role="example" searchTerms="SearXNG" />
+ <moz:SearchForm>{{ url_for('search', _external=True) }}</moz:SearchForm>
</OpenSearchDescription>
diff --git a/searx/webapp.py b/searx/webapp.py
index 83bbeac06..eb2b19d44 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -1282,19 +1282,17 @@ Disallow: /*?*q=*
@app.route('/opensearch.xml', methods=['GET'])
def opensearch():
- method = 'post'
-
- if request.preferences.get_value('method') == 'GET':
- method = 'get'
+ method = request.preferences.get_value('method')
+ autocomplete = request.preferences.get_value('autocomplete')
# chrome/chromium only supports HTTP GET....
if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
- method = 'get'
+ method = 'GET'
- autocomplete = request.preferences.get_value('autocomplete')
+ if method not in ('POST', 'GET'):
+ method = 'POST'
ret = render('opensearch.xml', opensearch_method=method, autocomplete=autocomplete)
-
resp = Response(response=ret, status=200, mimetype="application/opensearchdescription+xml")
return resp
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index 558cc6bb3..9f10df908 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -244,7 +244,9 @@ class ViewsTestCase(SearxTestCase):
def test_opensearch_xml(self):
result = self.app.get('/opensearch.xml')
self.assertEqual(result.status_code, 200)
- self.assertIn(b'<Description>a privacy-respecting, hackable metasearch engine</Description>', result.data)
+ self.assertIn(
+ b'<Description>SearXNG is a metasearch engine that respects your privacy.</Description>', result.data
+ )
def test_favicon(self):
result = self.app.get('/favicon.ico')