summaryrefslogtreecommitdiff
path: root/searx/search/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/search/__init__.py')
-rw-r--r--searx/search/__init__.py51
1 files changed, 23 insertions, 28 deletions
diff --git a/searx/search/__init__.py b/searx/search/__init__.py
index f0cd6765f..36903b194 100644
--- a/searx/search/__init__.py
+++ b/searx/search/__init__.py
@@ -1,28 +1,30 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring, too-few-public-methods
+# the public namespace has not yet been finally defined ..
+# __all__ = ["EngineRef", "SearchQuery"]
+
import threading
-from copy import copy
from timeit import default_timer
from uuid import uuid4
-import flask
from flask import copy_current_request_context
-import babel
-from searx import settings
-from searx.answerers import ask
-from searx.external_bang import get_bang_url
-from searx.results import ResultContainer
from searx import logger
-from searx.plugins import plugins
-from searx.search.models import EngineRef, SearchQuery
+from searx import settings
+import searx.answerers
+import searx.plugins
from searx.engines import load_engines
-from searx.network import initialize as initialize_network, check_network_configuration
+from searx.extended_types import SXNG_Request
+from searx.external_bang import get_bang_url
from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time
-from searx.search.processors import PROCESSORS, initialize as initialize_processors
+from searx.network import initialize as initialize_network, check_network_configuration
+from searx.results import ResultContainer
from searx.search.checker import initialize as initialize_checker
+from searx.search.models import SearchQuery
+from searx.search.processors import PROCESSORS, initialize as initialize_processors
+from .models import EngineRef, SearchQuery
logger = logger.getChild('search')
@@ -68,17 +70,10 @@ class Search:
return False
def search_answerers(self):
- """
- Check if an answer return a result.
- If yes, update self.result_container and return True
- """
- answerers_results = ask(self.search_query)
- if answerers_results:
- for results in answerers_results:
- self.result_container.extend('answer', results)
- return True
- return False
+ results = searx.answerers.STORAGE.ask(self.search_query.query)
+ self.result_container.extend(None, results)
+ return bool(results)
# do search-request
def _get_requests(self):
@@ -184,11 +179,11 @@ class Search:
class SearchWithPlugins(Search):
"""Inherit from the Search class, add calls to the plugins."""
- __slots__ = 'ordered_plugin_list', 'request'
+ __slots__ = 'user_plugins', 'request'
- def __init__(self, search_query: SearchQuery, ordered_plugin_list, request: flask.Request):
+ def __init__(self, search_query: SearchQuery, request: SXNG_Request, user_plugins: list[str]):
super().__init__(search_query)
- self.ordered_plugin_list = ordered_plugin_list
+ self.user_plugins = user_plugins
self.result_container.on_result = self._on_result
# pylint: disable=line-too-long
# get the "real" request to use it outside the Flask context.
@@ -200,14 +195,14 @@ class SearchWithPlugins(Search):
self.request = request._get_current_object()
def _on_result(self, result):
- return plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
+ return searx.plugins.STORAGE.on_result(self.request, self, result)
def search(self) -> ResultContainer:
- if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
- super().search()
- plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
+ if searx.plugins.STORAGE.pre_search(self.request, self):
+ super().search()
+ searx.plugins.STORAGE.post_search(self.request, self)
self.result_container.close()
return self.result_container