[enh][fix] opensearch separation ++ better chrome support

This commit is contained in:
asciimoo 2014-01-30 13:30:41 +01:00
parent 08136f5ba2
commit 941e5fb2c4
2 changed files with 15 additions and 16 deletions

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>searx</ShortName>
<Description>Search searx</Description>
<InputEncoding>UTF-8</InputEncoding>
<LongName>searx metasearch</LongName>
{% if method == 'get' %}
<Url type="text/html" method="get" template="{{ host }}?q={searchTerms}"/>
{% else %}
<Url type="text/html" method="post" template="{{ host }}">
<Param name="q" value="{searchTerms}" />
</Url>
{% endif %}
</OpenSearchDescription>

View File

@ -48,19 +48,6 @@ favicons = ['wikipedia', 'youtube', 'vimeo', 'soundcloud',
'twitter', 'stackoverflow', 'github'] 'twitter', 'stackoverflow', 'github']
opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>searx</ShortName>
<Description>Search searx</Description>
<InputEncoding>UTF-8</InputEncoding>
<LongName>searx meta search engine</LongName>
<Url type="text/html" method="{method}" template="{host}">
<Param name="q" value="{{searchTerms}}" />
</Url>
</OpenSearchDescription>
'''
@babel.localeselector @babel.localeselector
def get_locale(): def get_locale():
locale = request.accept_languages.best_match(settings['locales'].keys()) locale = request.accept_languages.best_match(settings['locales'].keys())
@ -298,13 +285,11 @@ Disallow: /engines
@app.route('/opensearch.xml', methods=['GET']) @app.route('/opensearch.xml', methods=['GET'])
def opensearch(): def opensearch():
global opensearch_xml
method = 'post' method = 'post'
# chrome/chromium only supports HTTP GET.... # chrome/chromium only supports HTTP GET....
if request.headers.get('User-Agent', '').lower().find('webkit') >= 0: if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
method = 'get' method = 'get'
base_url = get_base_url() ret = render('opensearch.xml', method=method, host=get_base_url())
ret = opensearch_xml.format(method=method, host=base_url)
resp = Response(response=ret, resp = Response(response=ret,
status=200, status=200,
mimetype="application/xml") mimetype="application/xml")