Exemple #1
0
def _register_method(app, interface, method_name, signature):
    swag = swag_from(create_spec(method_name, signature))
    executor_function = swag(create_executor_function(interface, method_name))
    app.add_url_rule('/' + method_name,
                     method_name,
                     executor_function,
                     methods=['POST'])
Exemple #2
0
def _register_method(app, interface, method_name, signature):
    spec = create_spec(method_name, signature)

    executor_function = create_executor_function(interface, method_name, spec)
    swag = swag_from(spec, validation=VALIDATE)
    executor_function = swag(executor_function)

    app.add_url_rule('/' + method_name, method_name, executor_function, methods=['POST'])
Exemple #3
0
        def decorator(view_func):
            abs_doc_path = os.path.join(self.docs_root, doc_name)
            wrap_func = swag_from(specs=abs_doc_path, **swag_kwargs)(view_func)

            @wraps(view_func)
            def wrapper(*args, **kwargs):
                return wrap_func(*args, **kwargs)

            return wrapper
Exemple #4
0
    def decorator(function):
        abs_file_path = os.path.join(swagger.app.root_path,
                                     swagger.app.config["SWAGGER_DOCS_PATH"],
                                     file_name)
        wrap_func = swag_from(specs=abs_file_path, **swag_kwargs)(function)

        @functools.wraps(function)
        def wrapper(*args, **kwargs):
            return wrap_func(*args, **kwargs)

        return wrapper
Exemple #5
0
def _register_method(app, interface, method_name, signature):
    from flasgger import swag_from

    swag = swag_from(
        create_spec(method_name, signature, str(Interface),
                    interface.exposed_method_docs(method_name)))
    executor_function = swag(create_executor_function(interface, method_name))
    app.add_url_rule('/' + method_name,
                     method_name,
                     executor_function,
                     methods=['POST'])
Exemple #6
0
def swag_from_docs(filename, docs_directory_name="docs", *args, **kwargs):
    """
        Funkcja-nakładka dla dekoratora swag_from.
        Generuje ścieżkę do pliku `filename`,
        znajdującego się w folderze `docs_directory_name`.
        Ścieżka do folderu `docs_directory_name` to folder,
        w którym znajduje się plik wywołujący tą funkcję
        Może być używana jako dekorator.
    """

    calling_file_directory = os.path.dirname(inspect.stack()[1].filename)

    file_path = os.path.join(calling_file_directory, docs_directory_name,
                             filename)

    return swag_from(file_path, *args, **kwargs)
Exemple #7
0
 def doc(self, specs=None, **options):
     if specs is not None:
         specs['tags'] = [self.name]
         return swag_from(specs=specs, **options)
Exemple #8
0
def setup_routes(app):
    for target, nba in app.notebook_adapters.items():
        target_specs=specs_dict = {
              "parameters": [
                {
                  "name": p_name,
                  "in": "query",
                  "type": to_oapi_type(p_data['python_type']),
                  "required": "false",
                  "default": p_data['default_value'],
                  "description": p_data['comment']+" "+p_data['owl_type'],
                }
                for p_name, p_data in nba.extract_parameters().items()
              ],
              "responses": {
                "200": {
                  "description": repr(nba.extract_output_declarations()),
                }
              }
            }

        endpoint='endpoint_'+target


        def funcg(target):
            def workflow_func():
                return workflow(target)
            return workflow_func

        logger.debug("target: %s with endpoint %s",target,endpoint)

        def response_filter(rv):
            if isinstance(rv, tuple) and isinstance(rv[0], Response) and rv[1] != 200:
                logger.info("NOT caching response %s", rv[1])
                return False
            elif isinstance(rv, Response) and rv.status != 200:
                logger.info("NOT caching response %s", rv)
                return False
            else:
                logger.info("caching response %s", rv)
                return True

        cache_timeout = nba.get_system_parameter_value('cache_timeout', 0)
        try:
            app.route('/api/v1.0/get/'+target,methods=['GET'],endpoint=endpoint)(
            swag_from(target_specs)(
            cache.cached(timeout=cache_timeout,key_prefix=make_key,response_filter=response_filter,query_string=True)(
                funcg(target)
            )))
        except AssertionError as e:
            logger.info("unable to add route:",e)
            raise

        schedule_interval = nba.get_system_parameter_value('schedule_interval', 0)
        if schedule_interval>0:
            logger.info("scheduling callable %s every %lg", str(funcg), float(schedule_interval))

            def schedulable():
                with app.test_request_context('/api/v1.0/get/'+target):
                    from flask import request
                    get_view_function('/api/v1.0/get/'+target)[0]()

            schedule.schedule_callable(schedulable, schedule_interval)
Exemple #9
0
def spec(path, methods=None):
    spec_path = os.path.join(api.__path__[0], 'spec/routes', path)
    return swag_from(spec_path, methods=methods)