Обновление API Utils для работы с медиа
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
import asyncio
|
||||
from .api_errors import *
|
||||
from .api_params import ApiParam
|
||||
|
||||
# TODO запилить класс для параметров: телефон, пароль, почта
|
||||
from django.http import HttpResponse
|
||||
from .api_params import *
|
||||
|
||||
|
||||
api_methods_dict = {}
|
||||
@@ -32,7 +29,7 @@ def api_method(func_name, doc="", params: list or None = None, returns=""):
|
||||
Декоратор для методов API, автоматически валидирует и передает параметры методам
|
||||
"""
|
||||
def actual_decorator(func):
|
||||
async def wrapper(**kwargs):
|
||||
async def wrapper(__raw_request, **kwargs):
|
||||
print(f"> call method {func_name} with params {kwargs}. method params: {params}")
|
||||
|
||||
errors = []
|
||||
@@ -43,12 +40,16 @@ def api_method(func_name, doc="", params: list or None = None, returns=""):
|
||||
raise Exception(API_ERROR_INTERNAL_ERROR, f"param {p} is not instance of ApiParam class")
|
||||
|
||||
name = p.get_name()
|
||||
value = kwargs[name] if name in kwargs else None
|
||||
|
||||
if asyncio.iscoroutinefunction(p.validate):
|
||||
func_args[name] = await p.validate(value)
|
||||
if isinstance(p, ApiRequestParam):
|
||||
func_args[name] = __raw_request
|
||||
else:
|
||||
func_args[name] = p.validate(value)
|
||||
value = kwargs[name] if name in kwargs else None
|
||||
|
||||
if asyncio.iscoroutinefunction(p.validate):
|
||||
func_args[name] = await p.validate(value)
|
||||
else:
|
||||
func_args[name] = p.validate(value)
|
||||
|
||||
except Exception as ex:
|
||||
errors.append(ex)
|
||||
@@ -69,6 +70,10 @@ def api_method(func_name, doc="", params: list or None = None, returns=""):
|
||||
|
||||
if out is None:
|
||||
return make_error_object(Exception(API_ERROR_INTERNAL_ERROR, "method returned null object"))
|
||||
|
||||
if not isinstance(out, dict) and not isinstance(out, HttpResponse):
|
||||
return make_error_object(Exception(API_ERROR_INTERNAL_ERROR, "method returned invalid object type"))
|
||||
|
||||
return out
|
||||
|
||||
api_methods_dict[func_name] = {
|
||||
|
||||
Reference in New Issue
Block a user