summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/dev/engine_overview.rst7
-rw-r--r--searx/engines/wikipedia.py4
-rw-r--r--searx/search.py6
3 files changed, 11 insertions, 6 deletions
diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst
index 0f58af765..0b5f9857f 100644
--- a/docs/dev/engine_overview.rst
+++ b/docs/dev/engine_overview.rst
@@ -134,9 +134,9 @@ The function ``def request(query, params):`` always returns the ``params``
variable. Inside searx, the following paramters can be used to specify a search
request:
-================== =========== ========================================================================
+================== =========== ==========================================================================
argument type information
-================== =========== ========================================================================
+================== =========== ==========================================================================
url string requested url
method string HTTP request method
headers set HTTP header information
@@ -145,7 +145,8 @@ cookies set HTTP cookies
verify boolean Performing SSL-Validity check
max_redirects int maximum redirects, hard limit
soft_max_redirects int maximum redirects, soft limit. Record an error but don't stop the engine
-================== =========== ========================================================================
+raise_for_status bool True by default: raise an exception if the HTTP code of response is >= 300
+================== =========== ==========================================================================
example code
diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py
index 620ec3c14..9fce170eb 100644
--- a/searx/engines/wikipedia.py
+++ b/searx/engines/wikipedia.py
@@ -37,13 +37,15 @@ def request(query, params):
language=url_lang(params['language']))
params['headers']['User-Agent'] = searx_useragent()
+ params['raise_for_status'] = False
+ params['soft_max_redirects'] = 2
return params
# get response from search-request
def response(resp):
- if not resp.ok:
+ if resp.status_code == 404:
return []
results = []
diff --git a/searx/search.py b/searx/search.py
index 8898f1576..8c2ad8d72 100644
--- a/searx/search.py
+++ b/searx/search.py
@@ -143,7 +143,8 @@ def send_http_request(engine, request_params):
response = req(request_params['url'], **request_args)
# check HTTP status
- response.raise_for_status()
+ if request_params.get('raise_for_status'):
+ response.raise_for_status()
# check soft limit of the redirect count
if len(response.history) > soft_max_redirects:
@@ -340,7 +341,8 @@ def default_request_params():
'url': '',
'cookies': {},
'verify': True,
- 'auth': None
+ 'auth': None,
+ 'raise_for_status': True
}