| 
							
							# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						
						
						
						
							 | 
							
							# pylint: disable=missing-module-docstring
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							from __future__ import annotations
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							import hashlib
 | 
						
						
						
						
							 | 
							
							import random
 | 
						
						
						
						
							 | 
							
							import string
 | 
						
						
						
						
							 | 
							
							import uuid
 | 
						
						
						
						
							 | 
							
							from flask_babel import gettext
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							from searx.result_types import Answer
 | 
						
						
						
						
							 | 
							
							from searx.result_types.answer import BaseAnswer
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							from . import Answerer, AnswererInfo
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_characters():
 | 
						
						
						
						
							 | 
							
							    random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
 | 
						
						
						
						
							 | 
							
							    return [random.choice(random_string_letters) for _ in range(random.randint(8, 32))]
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_string():
 | 
						
						
						
						
							 | 
							
							    return ''.join(random_characters())
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_float():
 | 
						
						
						
						
							 | 
							
							    return str(random.random())
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_int():
 | 
						
						
						
						
							 | 
							
							    random_int_max = 2**31
 | 
						
						
						
						
							 | 
							
							    return str(random.randint(-random_int_max, random_int_max))
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_sha256():
 | 
						
						
						
						
							 | 
							
							    m = hashlib.sha256()
 | 
						
						
						
						
							 | 
							
							    m.update(''.join(random_characters()).encode())
 | 
						
						
						
						
							 | 
							
							    return str(m.hexdigest())
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_uuid():
 | 
						
						
						
						
							 | 
							
							    return str(uuid.uuid4())
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							def random_color():
 | 
						
						
						
						
							 | 
							
							    color = "%06x" % random.randint(0, 0xFFFFFF)
 | 
						
						
						
						
							 | 
							
							    return f"#{color.upper()}"
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							class SXNGAnswerer(Answerer):
 | 
						
						
						
						
							 | 
							
							    """Random value generator"""
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							    keywords = ["random"]
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							    random_types = {
 | 
						
						
						
						
							 | 
							
							        "string": random_string,
 | 
						
						
						
						
							 | 
							
							        "int": random_int,
 | 
						
						
						
						
							 | 
							
							        "float": random_float,
 | 
						
						
						
						
							 | 
							
							        "sha256": random_sha256,
 | 
						
						
						
						
							 | 
							
							        "uuid": random_uuid,
 | 
						
						
						
						
							 | 
							
							        "color": random_color,
 | 
						
						
						
						
							 | 
							
							    }
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							    def info(self):
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							        return AnswererInfo(
 | 
						
						
						
						
							 | 
							
							            name=gettext(self.__doc__),
 | 
						
						
						
						
							 | 
							
							            description=gettext("Generate different random values"),
 | 
						
						
						
						
							 | 
							
							            keywords=self.keywords,
 | 
						
						
						
						
							 | 
							
							            examples=[f"random {x}" for x in self.random_types],
 | 
						
						
						
						
							 | 
							
							        )
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							    def answer(self, query: str) -> list[BaseAnswer]:
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							        parts = query.split()
 | 
						
						
						
						
							 | 
							
							        if len(parts) != 2 or parts[1] not in self.random_types:
 | 
						
						
						
						
							 | 
							
							            return []
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							        return [Answer(answer=self.random_types[parts[1]]())]
 |