Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0969e50c authored by Adam Tauber's avatar Adam Tauber
Browse files

[fix] convert json engine result attributes to string - closes #1006

parent a065fcdc
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ from collections import Iterable
from json import loads
from sys import version_info
from searx.url_utils import urlencode
from searx.utils import to_string

if version_info[0] == 3:
    unicode = str
@@ -111,14 +112,22 @@ def response(resp):
                content = query(result, content_query)[0]
            except:
                content = ""
            results.append({'url': url, 'title': title, 'content': content})
            results.append({
                'url': to_string(url),
                'title': to_string(title),
                'content': to_string(content),
            })
    else:
        for url, title, content in zip(
            query(json, url_query),
            query(json, title_query),
            query(json, content_query)
        ):
            results.append({'url': url, 'title': title, 'content': content})
            results.append({
                'url': to_string(url),
                'title': to_string(title),
                'content': to_string(content),
            })

    if not suggestion_query:
        return results
+12 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ import re
from babel.dates import format_date
from codecs import getincrementalencoder
from imp import load_source
from numbers import Number
from os.path import splitext, join
from random import choice
import sys
@@ -336,3 +337,14 @@ def new_hmac(secret_key, url):
        return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest()
    else:
        return hmac.new(bytes(secret_key, 'utf-8'), url, hashlib.sha256).hexdigest()


def to_string(obj):
    if isinstance(obj, basestring):
        return obj
    if isinstance(obj, Number):
        return unicode(obj)
    if hasattr(obj, '__str__'):
        return obj.__str__()
    if hasattr(obj, '__repr__'):
        return obj.__repr__()