Стабильная версия API

This commit is contained in:
vlados31 2022-10-16 11:37:50 +03:00
parent c757646354
commit 1a6f2d578e
4 changed files with 41 additions and 23 deletions

View File

@ -221,6 +221,10 @@ class ApiOrder:
]
})
@staticmethod
def create(self):
pass
def api_call_method(method_name, params: dict):
try:
@ -237,10 +241,30 @@ def api_call_method(method_name, params: dict):
def api_get_documentation():
# {
# "name": p["name"],
# "type": p["type"],
# "description": p["description"],
# "required": p["required"]
# }
return []
def _translate_type(t):
_types = {
str: "str",
int: "int",
UserToken: "token"
}
if t in _types:
return _types[t]
else:
return str(t)
out = []
for m in api_methods_dict:
out.append({
"name": m,
"doc": api_methods_dict[m]["doc"],
"returns": api_methods_dict[m]["returns"],
"params": [
{
"name": p["name"],
"type": _translate_type(p["type"]),
"description": p["description"],
"required": p["required"]
} for p in api_methods_dict[m]["params"]
]
})
return out

View File

@ -36,8 +36,8 @@ def api_get_param_str(params: dict, name: str, required=True, default=""):
def api_get_access_token(params: dict, unused_name, required=True):
token = api_get_param_str(params, "access_token", required)[0]
print(f"checking token '{token}'")
token = api_get_param_str(params, "access_token", required)
# print(f"checking token '{token}'")
return UserToken.get_by_token(token)
@ -93,7 +93,7 @@ def api_method(func_name, doc="", params: list or None = None, returns=""):
"doc": doc,
"params": params,
"func": wrapper,
"return": returns
"returns": returns
}
return wrapper

View File

@ -8,16 +8,6 @@ from .api_errors import *
def view_methods(request):
methods = []
def __make_param(p):
return {
"name": p["name"],
"type": p["type"],
"description": p["description"],
"required": p["required"]
}
methods = api_get_documentation()
return render(request, 'api/index.html', {'api_methods': methods})
@ -29,9 +19,13 @@ def call_method(request, method_name):
params = request.POST
else:
return HttpResponseBadRequest()
api_params = {}
for p in params:
# защита от нескольких параметров с одним именем
api_params[p] = params[p]
out = api_call_method(method_name, params)
out = api_call_method(method_name, api_params)
response = HttpResponse(json.dumps(out, ensure_ascii=False))
response = HttpResponse(json.dumps(out, ensure_ascii=False, indent=4))
response.headers["Content-type"] = "application/json; charset=utf-8"
return response

View File

@ -45,7 +45,7 @@
<!-- а вообще можно подумать о том, чтобы сныкать ее содержимое в первую менюшку если сайт для телефонов:
зачем иметь две выпадающие менюшки если есть одна? но это надо обсудить с Вадимом -->
<div class="dropdown-wrapper" id="profile-menu-dropdown">
<button class="dropdown-button fa fa-bars"></button>
<button class="dropdown-button fa fa-user"></button>
<div class="dropdown-content">
{% if user.is_authenticated %}
<a href="{% url 'profile' %}">Профиль</a>