Changeset View
Changeset View
Standalone View
Standalone View
swh/core/api/__init__.py
Show First 20 Lines • Show All 426 Lines • ▼ Show 20 Lines | class RPCServerApp(Flask): | ||||
"""Value of `extra_encoders` passed to `json_dumps` or `msgpack_dumps` | """Value of `extra_encoders` passed to `json_dumps` or `msgpack_dumps` | ||||
to be able to serialize more object types.""" | to be able to serialize more object types.""" | ||||
extra_type_decoders: Dict[str, Callable] = {} | extra_type_decoders: Dict[str, Callable] = {} | ||||
"""Value of `extra_decoders` passed to `json_loads` or `msgpack_loads` | """Value of `extra_decoders` passed to `json_loads` or `msgpack_loads` | ||||
to be able to deserialize more object types.""" | to be able to deserialize more object types.""" | ||||
def __init__(self, *args, backend_class=None, backend_factory=None, **kwargs): | def __init__(self, *args, backend_class=None, backend_factory=None, **kwargs): | ||||
super().__init__(*args, **kwargs) | super().__init__(*args, **kwargs) | ||||
self.add_backend_class(backend_class, backend_factory) | |||||
def add_backend_class(self, backend_class=None, backend_factory=None): | |||||
if backend_class is None and backend_factory is not None: | if backend_class is None and backend_factory is not None: | ||||
raise ValueError( | raise ValueError( | ||||
"backend_factory should only be provided if backend_class is" | "backend_factory should only be provided if backend_class is" | ||||
) | ) | ||||
self.backend_class = backend_class | |||||
if backend_class is not None: | if backend_class is not None: | ||||
backend_factory = backend_factory or backend_class | backend_factory = backend_factory or backend_class | ||||
for (meth_name, meth) in backend_class.__dict__.items(): | for (meth_name, meth) in backend_class.__dict__.items(): | ||||
if hasattr(meth, "_endpoint_path"): | if hasattr(meth, "_endpoint_path"): | ||||
self.__add_endpoint(meth_name, meth, backend_factory) | self.__add_endpoint(meth_name, meth, backend_factory) | ||||
def __add_endpoint(self, meth_name, meth, backend_factory): | def __add_endpoint(self, meth_name, meth, backend_factory): | ||||
from flask import request | from flask import request | ||||
Show All 10 Lines |