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'])
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'])
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
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
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'])
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)
def doc(self, specs=None, **options): if specs is not None: specs['tags'] = [self.name] return swag_from(specs=specs, **options)
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)
def spec(path, methods=None): spec_path = os.path.join(api.__path__[0], 'spec/routes', path) return swag_from(spec_path, methods=methods)