Browse Source

Merge self_ip and self_useragent into one plugin

Luc Didry 10 years ago
parent
commit
41fd748cdf
4 changed files with 18 additions and 45 deletions
  1. 2 4
      searx/plugins/__init__.py
  2. 11 2
      searx/plugins/self.py
  3. 0 36
      searx/plugins/self_useragent.py
  4. 5 3
      searx/tests/test_plugins.py

+ 2 - 4
searx/plugins/__init__.py

@@ -20,8 +20,7 @@ from searx import logger
 logger = logger.getChild('plugins')
 logger = logger.getChild('plugins')
 
 
 from searx.plugins import (https_rewrite,
 from searx.plugins import (https_rewrite,
-                           self_ip,
-                           self_useragent,
+                           self,
                            search_on_category_select)
                            search_on_category_select)
 
 
 required_attrs = (('name', str),
 required_attrs = (('name', str),
@@ -72,6 +71,5 @@ class PluginStore():
 
 
 plugins = PluginStore()
 plugins = PluginStore()
 plugins.register(https_rewrite)
 plugins.register(https_rewrite)
-plugins.register(self_ip)
-plugins.register(self_useragent)
+plugins.register(self)
 plugins.register(search_on_category_select)
 plugins.register(search_on_category_select)

+ 11 - 2
searx/plugins/self_ip.py → searx/plugins/self.py

@@ -15,11 +15,16 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
 (C) 2015 by Adam Tauber, <asciimoo@gmail.com>
 (C) 2015 by Adam Tauber, <asciimoo@gmail.com>
 '''
 '''
 from flask.ext.babel import gettext
 from flask.ext.babel import gettext
-name = "Self IP"
-description = gettext('Display your source IP address if the query expression is "ip"')
+import re
+name = "Self Informations"
+description = gettext('Correct Duckduckgo instant answers with your own informations (IP and User Agent)')
 default_on = True
 default_on = True
 
 
 
 
+# Self User Agent regex
+p = re.compile('.*user[ -]agent.*', re.IGNORECASE)
+
+
 # attach callback to the post search hook
 # attach callback to the post search hook
 #  request: flask request object
 #  request: flask request object
 #  ctx: the whole local context of the pre search hook
 #  ctx: the whole local context of the pre search hook
@@ -32,4 +37,8 @@ def post_search(request, ctx):
             ip = request.remote_addr
             ip = request.remote_addr
         ctx['search'].answers.clear()
         ctx['search'].answers.clear()
         ctx['search'].answers.add(ip)
         ctx['search'].answers.add(ip)
+    elif p.match(ctx['search'].query):
+        ua = request.user_agent
+        ctx['search'].answers.clear()
+        ctx['search'].answers.add(ua)
     return True
     return True

+ 0 - 36
searx/plugins/self_useragent.py

@@ -1,36 +0,0 @@
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-
-(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
-'''
-from flask.ext.babel import gettext
-import re
-name = "Self User Agent"
-description = gettext('Display your own User Agent if the query expression contains "user agent" or "user-agent"')
-default_on = True
-
-
-# User Agent query regex
-p = re.compile('user[ -]agent', re.IGNORECASE)
-
-
-# attach callback to the post search hook
-#  request: flask request object
-#  ctx: the whole local context of the pre search hook
-def post_search(request, ctx):
-    if p.match(ctx['search'].query):
-        ua = request.user_agent
-        ctx['search'].answers.clear()
-        ctx['search'].answers.add(ua)
-    return True

+ 5 - 3
searx/tests/test_plugins.py

@@ -38,10 +38,9 @@ class SelfIPTest(SearxTestCase):
 
 
     def test_PluginStore_init(self):
     def test_PluginStore_init(self):
         store = plugins.PluginStore()
         store = plugins.PluginStore()
-        store.register(plugins.self_ip)
-        store.register(plugins.self_useragent)
+        store.register(plugins.self)
 
 
-        self.assertTrue(len(store.plugins) == 2)
+        self.assertTrue(len(store.plugins) == 1)
 
 
         # IP test
         # IP test
         request = Mock(user_plugins=store.plugins,
         request = Mock(user_plugins=store.plugins,
@@ -64,3 +63,6 @@ class SelfIPTest(SearxTestCase):
                               query='user agent')}
                               query='user agent')}
         store.call('post_search', request, ctx)
         store.call('post_search', request, ctx)
         self.assertTrue('Mock' in ctx['search'].answers)
         self.assertTrue('Mock' in ctx['search'].answers)
+        ctx = {'search': Mock(answers=set(),
+                              query='What is my User-Agent?')}
+        store.call('post_search', request, ctx)