Browse Source

initial implemention of autocompletion in opensearch.xml

Thomas Pointhuber 11 years ago
parent
commit
cc7f3cb617
2 changed files with 21 additions and 5 deletions
  1. 10 1
      searx/templates/opensearch.xml
  2. 11 4
      searx/webapp.py

+ 10 - 1
searx/templates/opensearch.xml

@@ -6,9 +6,18 @@
   <LongName>searx metasearch</LongName>
   {% if method == 'get' %}
     <Url type="text/html" method="get" template="{{ host }}?q={searchTerms}"/>
+    <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
+        <Param name="format" value="x-suggestions" />
+        <Param name="q" value="{searchTerms}" />
+    </Url>
   {% else %}
     <Url type="text/html" method="post" template="{{ host }}">
-      <Param name="q" value="{searchTerms}" />
+        <Param name="q" value="{searchTerms}" />
+    </Url>
+    <!-- TODO, POST REQUEST doesn't work -->
+    <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
+        <Param name="format" value="x-suggestions" />
+        <Param name="q" value="{searchTerms}" />
     </Url>
   {% endif %}
 </OpenSearchDescription>

+ 11 - 4
searx/webapp.py

@@ -233,10 +233,17 @@ def autocompleter():
     
     # TODO fix XSS-vulnerability, remove test code
     autocompleter.querry = request_data.get('q')
-    autocompleter.results = [autocompleter.querry]
-
-    return Response(json.dumps(autocompleter.results),
-                               mimetype='application/json')
+    autocompleter.results = []
+    
+    if autocompleter.querry:
+        autocompleter.results = [autocompleter.querry + "-searx",autocompleter.querry + " asfded",autocompleter.querry + " asdf"]
+    
+    if request_data.get('format') == 'x-suggestions':
+        return Response(json.dumps([autocompleter.querry,autocompleter.results]),
+                                   mimetype='application/json')
+    else:
+        return Response(json.dumps(autocompleter.results),
+                                   mimetype='application/json')
 
 
 @app.route('/preferences', methods=['GET', 'POST'])