Legoktm has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/400455 )

Change subject: Fix broken open search links
......................................................................

Fix broken open search links

We need to rewrite the URLs and names in open_search.xml, and since it's
a small XML file we might as well just replace it with our own entirely.

Each backend will have its own open_search.xml endpoint, with identical
<ShortName> but unique <Description>.

Bug: T183728
Change-Id: I1b84db58d0c28f5305ae0d376bef707a63ebf87b
---
M app.py
A templates/open_search.xml
2 files changed, 43 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/labs/codesearch 
refs/changes/55/400455/1

diff --git a/app.py b/app.py
index 029b9bd..3888262 100644
--- a/app.py
+++ b/app.py
@@ -18,9 +18,10 @@
 """
 
 from flask import Flask, Response, request, redirect, url_for, \
-    send_from_directory
+    send_from_directory, render_template
 
 import os
+import re
 import requests
 import traceback
 
@@ -33,6 +34,15 @@
     'things': 6083,
     'core': 6084,
 }
+DESCRIPTIONS = {
+    'search': 'Everything',
+    'core': 'MediaWiki core',
+    'extensions': 'Extensions',
+    'skins': 'Skins',
+    'things': 'Extensions & skins',
+}
+
+LINK_OPENSEARCH = re.compile('<link rel="search" .*?/>', flags=re.DOTALL)
 
 
 @app.route('/favicon.ico')
@@ -44,7 +54,8 @@
         mimetype='image/vnd.microsoft.icon')
 
 
-def index_url(target, text, current):
+def index_url(target, current):
+    text = DESCRIPTIONS[target]
     if target == current:
         return '<b>%s</b>' % text
     else:
@@ -74,11 +85,11 @@
 {things}
 </div>
 """.format(
-        search=index_url('search', 'Everything', backend),
-        core=index_url('core', 'MediaWiki core', backend),
-        ext=index_url('extensions', 'Extensions', backend),
-        skins=index_url('skins', 'Skins', backend),
-        things=index_url('things', 'Extensions & skins', backend)
+        search=index_url('search', backend),
+        core=index_url('core', backend),
+        ext=index_url('extensions', backend),
+        skins=index_url('skins', backend),
+        things=index_url('things', backend)
     )
     title = '<title>MediaWiki code search</title>'
 
@@ -92,14 +103,29 @@
 </p>
 """
 
+    opensearch_link = """
+<link rel="search" href="%s"
+      type="application/opensearchdescription+xml"
+      title="MediaWiki code search" />
+""" % url_for('opensearch', backend=backend, description=DESCRIPTIONS[backend])
+
     def mangle(text):
         text = text.replace('<body>', '<body>' + header)
         text = text.replace('</body>', footer + '</body>')
         text = text.replace('<title>Hound</title>', title)
+        text = LINK_OPENSEARCH.sub(opensearch_link, text)
         return text
     return proxy(backend, mangle=mangle)
 
 
[email protected]('/<backend>/open_search.xml')
+def opensearch(backend):
+    if backend not in BACKENDS:
+        return 'invalid backend'
+    temp = render_template('open_search.xml', backend=backend)
+    return Response(temp, content_type='text/xml')
+
+
 @app.route('/<backend>/<path:path>')
 def proxy(backend, path='', mangle=False):
     if backend not in BACKENDS:
diff --git a/templates/open_search.xml b/templates/open_search.xml
new file mode 100644
index 0000000..b8b16e8
--- /dev/null
+++ b/templates/open_search.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/";>
+    <ShortName>MediaWiki code search</ShortName>
+    <Description>Search MediaWiki code ({{description}})</Description>
+    <Tags>mediawiki</Tags>
+    <Url type="text/html"
+         method="get"
+         template="https://codesearch.wmflabs.org/{{ backend 
}}/?q={searchTerms}" />
+</OpenSearchDescription>

-- 
To view, visit https://gerrit.wikimedia.org/r/400455
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b84db58d0c28f5305ae0d376bef707a63ebf87b
Gerrit-PatchSet: 1
Gerrit-Project: labs/codesearch
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to