summaryrefslogtreecommitdiff
path: root/searx/search/processors/offline.py
blob: 32e7164bf97984594306200d25665e24e4a43a36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Processors for engine-type: ``offline``"""

import typing as t
from .abstract import EngineProcessor, RequestParams

if t.TYPE_CHECKING:
    from searx.results import ResultContainer


class OfflineProcessor(EngineProcessor):
    """Processor class used by ``offline`` engines."""

    engine_type: str = "offline"

    def search(
        self,
        query: str,
        params: RequestParams,
        result_container: "ResultContainer",
        start_time: float,
        timeout_limit: float,
    ):
        try:
            search_results = self.engine.search(query, params)
            self.extend_container(result_container, start_time, search_results)
        except ValueError as e:
            # do not record the error
            self.logger.exception('engine {0} : invalid input : {1}'.format(self.engine.name, e))
        except Exception as e:  # pylint: disable=broad-except
            self.handle_exception(result_container, e)
            self.logger.exception('engine {0} : exception : {1}'.format(self.engine.name, e))