Ejemplo n.º 1
0
    def fetch(self, api, method='GET', body=None, headers=None, **_kwargs):
        """Fetch Info from backend."""
        body = body or dict()

        _headers = dict(host=self.request.host)
        if headers:
            _headers.update(headers)

        if '://' not in api:
            api = f'http://{O_O.server.back_ip}{api}'

        back_info = yield httpclient.AsyncHTTPClient().fetch(
            api,
            method=method,
            headers=_headers,
            body=json.dumps(body),
            raise_error=False,
            allow_nonstandard_methods=True)

        res_body = back_info.body and back_info.body.decode() or None

        if back_info.code >= 400:
            return Arguments(
                dict(http_code=back_info.code, res_body=res_body, api=api))

        try:
            return Arguments(json.loads(res_body))
        except json.JSONDecodeError:
            pass
    def __init__(self):
        self.arguments = Arguments()
        self.blender = Blender()
        self.parser = Parser()

        self.botfile = self.arguments.getBotFile()
        self.blender.unselectEverything()
        print("\nNow building " + self.botfile + "...")
        self.cubeData = self.parser.parseBotFile(self.botfile)
        self.cubedatabase = self.parser.parseCSVFile("assets/cubes.csv")
        self.blender.build(self.cubeData, self.cubedatabase)
        print("done!")
Ejemplo n.º 3
0
    def parse_json_arguments(self, *enforced_keys, **optional_keys):
        """Parse JSON argument like `get_argument`."""
        if O_O.debug:
            dump_in(f'Input: {self.request.method} {self.request.path}',
                    self.request.body.decode()[:500])

        try:
            req = json.loads(self.request.body.decode('utf-8'))
        except json.JSONDecodeError as exception:
            dump_error(self.request.body.decode())
            raise ParseJSONError(exception.doc)

        if not isinstance(req, dict):
            dump_error(self.request.body.decode())
            raise ParseJSONError('Req should be a dictonary.')

        for key in enforced_keys:
            if key not in req:
                dump_error(self.request.body.decode())
                raise MissingArgumentError(key)

        req['remote_ip'] = self.request.remote_ip
        req['request_time'] = int(time.time())

        return Arguments(req)
Ejemplo n.º 4
0
    def parse_form_arguments(self, *enforced_keys, **optional_keys):
        """Parse FORM argument like `get_argument`."""
        if O_O.debug:
            dump_in(f'Input: {self.request.method} {self.request.path}',
                    self.request.body.decode()[:500])

        req = dict()
        for key in enforced_keys:
            req[key] = self.get_argument(key)
        for key in optional_keys:
            values = self.get_arguments(key)
            if len(values) is 0:
                req[key] = optional_keys.get(key)
            elif len(values) is 1:
                req[key] = values[0]
            else:
                req[key] = values

        req['remote_ip'] = self.request.remote_ip
        req['request_time'] = int(time.time())

        return Arguments(req)
Ejemplo n.º 5
0
    def __init__(self, argumentSetup, pluginName):

        self.commandLine = CommandLine()
        # Initialize command line: Is expected to be the first occurrence.
        CommandLine().initSubParsers(dest="action")

        # Load plugin.
        self.plugin = Plugin(str(Path(__file__).parent.absolute()),\
         "plugins.currencies.{0}".format(pluginName))
        self.plugin.load()

        # Get args.
        self.args = Arguments(setups=[\
         ManagerArgumentSetup(self.plugin.module.Actions),\
         self.plugin.module.ArgumentSetup()
         ]).get()
        #self.args = self.plugin.module.ArgumentSetup().parser.parse_args()

        # Prepare, get and run requested action.
        if not self.args.action is None:
            self.act(self.args.action)
        else:
            self.commandLine.showFullHelp()
Ejemplo n.º 6
0
 def get_parameters(self):
     """Get user information from cookie."""
     params = self.get_secure_cookie(O_O.server.cookie_name.parameters)
     return Arguments(params and json.loads(params.decode()))