36 lines
1004 B
Python
36 lines
1004 B
Python
# -*- coding: utf-8 -*-
|
|
# django-jsonrpc-core | (c) 2022-present Tomek Wójcik | MIT License
|
|
import typing
|
|
|
|
from bthlabs_jsonrpc_core.registry import MethodRegistry
|
|
|
|
|
|
def register_method(method: str,
|
|
namespace: typing.Optional[str] = None,
|
|
) -> typing.Callable:
|
|
"""
|
|
Registers the decorated function as JSONRPC *method* in *namespace*.
|
|
If *namespace* is omitted, the function will be registered in the default
|
|
namespace.
|
|
|
|
Example:
|
|
|
|
.. code-block:: python
|
|
|
|
@register_method('example')
|
|
def example(a, b):
|
|
return a + b
|
|
"""
|
|
if namespace is None:
|
|
namespace = MethodRegistry.DEFAULT_NAMESPACE
|
|
|
|
def decorator(handler: typing.Callable) -> typing.Callable:
|
|
registry = MethodRegistry.shared_registry()
|
|
registry.register_method(namespace, method, handler)
|
|
|
|
handler.jsonrpc_method = method
|
|
handler.jsonrpc_namespace = namespace
|
|
return handler
|
|
|
|
return decorator
|