summaryrefslogtreecommitdiff
path: root/searx/webadapter.py
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2020-09-22 17:45:32 +0200
committerAlexandre Flament <alex@al-f.net>2020-09-22 18:59:51 +0200
commitd5b5e48f04e2e156cb975c136ec4b179b170509a (patch)
treecabbedf352e2ea3e45075fa0429d84c42120c6c3 /searx/webadapter.py
parent691d12726be1411d8c80895e927293bdcc3e9572 (diff)
downloadsearxng-d5b5e48f04e2e156cb975c136ec4b179b170509a.tar.gz
searxng-d5b5e48f04e2e156cb975c136ec4b179b170509a.zip
[mod] searx/webadapter.py: each web parameter has a dedicated function (parse_pageno, page_lang,....).
Diffstat (limited to 'searx/webadapter.py')
-rw-r--r--searx/webadapter.py64
1 files changed, 39 insertions, 25 deletions
diff --git a/searx/webadapter.py b/searx/webadapter.py
index 667d44c86..eed320a22 100644
--- a/searx/webadapter.py
+++ b/searx/webadapter.py
@@ -36,27 +36,14 @@ def validate_engineref_list(engineref_list, preferences):
return valid, unknown, no_token
-def get_search_query_from_webapp(preferences, form):
- # no text for the query ?
- if not form.get('q'):
- raise SearxParameterException('q', '')
-
- # set blocked engines
- disabled_engines = preferences.engines.get_disabled()
-
- # parse query, if tags are set, which change
- # the serch engine or search-language
- raw_text_query = RawTextQuery(form['q'], disabled_engines)
-
- # set query
- query = raw_text_query.getQuery()
-
- # get and check page number
+def parse_pageno(form):
pageno_param = form.get('pageno', '1')
if not pageno_param.isdigit() or int(pageno_param) < 1:
raise SearxParameterException('pageno', pageno_param)
- query_pageno = int(pageno_param)
+ return int(pageno_param)
+
+def parse_lang(raw_text_query, form, preferences):
# get language
# set specific language if set on request, query or preferences
# TODO support search with multible languages
@@ -71,7 +58,10 @@ def get_search_query_from_webapp(preferences, form):
if not VALID_LANGUAGE_CODE.match(query_lang):
raise SearxParameterException('language', query_lang)
- # get safesearch
+ return query_lang
+
+
+def parse_safesearch(form, preferences):
if 'safesearch' in form:
query_safesearch = form.get('safesearch')
# first check safesearch
@@ -85,30 +75,54 @@ def get_search_query_from_webapp(preferences, form):
if query_safesearch < 0 or query_safesearch > 2:
raise SearxParameterException('safesearch', query_safesearch)
- # get time_range
- query_time_range = form.get('time_range')
+ return query_safesearch
+
+def parse_time_range(form):
+ query_time_range = form.get('time_range')
# check time_range
query_time_range = None if query_time_range in ('', 'None') else query_time_range
if query_time_range not in (None, 'day', 'week', 'month', 'year'):
raise SearxParameterException('time_range', query_time_range)
+ return query_time_range
- # query_engines
- query_engineref_list = raw_text_query.enginerefs
- # timeout_limit
+def parse_timeout(raw_text_query, form):
query_timeout = raw_text_query.timeout_limit
if query_timeout is None and 'timeout_limit' in form:
raw_time_limit = form.get('timeout_limit')
if raw_time_limit in ['None', '']:
- raw_time_limit = None
+ return None
else:
try:
- query_timeout = float(raw_time_limit)
+ return float(raw_time_limit)
except ValueError:
raise SearxParameterException('timeout_limit', raw_time_limit)
+
+def get_search_query_from_webapp(preferences, form):
+ # no text for the query ?
+ if not form.get('q'):
+ raise SearxParameterException('q', '')
+
+ # set blocked engines
+ disabled_engines = preferences.engines.get_disabled()
+
+ # parse query, if tags are set, which change
+ # the serch engine or search-language
+ raw_text_query = RawTextQuery(form['q'], disabled_engines)
+
+ # set query
+ query = raw_text_query.getQuery()
+ query_pageno = parse_pageno(form)
+ query_lang = parse_lang(raw_text_query, form, preferences)
+ query_safesearch = parse_safesearch(form, preferences)
+ query_time_range = parse_time_range(form)
+ query_timeout = parse_timeout(raw_text_query, form)
+ external_bang = raw_text_query.external_bang
+
# query_categories
+ query_engineref_list = raw_text_query.enginerefs
query_categories = []
# if engines are calculated from query,