Files
myapp-full/myapp/ns_api/__init__.py

56 lines
1.3 KiB
Python
Raw Normal View History

__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
2019-10-27 19:40:03 +03:00
from functools import wraps
2022-05-03 22:34:52 +03:00
from jsonrpc import JSONRPC
from jsonrpc.backend.flask import APIView
2019-10-27 19:40:03 +03:00
from flask import session
2019-10-27 19:40:03 +03:00
from .. import app, models
2020-08-17 19:57:37 +03:00
2019-10-27 19:40:03 +03:00
def login_required(func):
@wraps(func)
def decorated_function(*args, **kwargs):
if 'logged_in' in session and 'user_id' in session:
user = models.db_session.query(
models.User
).filter(
2020-08-17 19:57:37 +03:00
models.User.id == session['user_id']
2019-10-27 19:40:03 +03:00
).first()
if user:
return func(*args, **kwargs)
else:
session.pop('logged_in', None)
session.pop('user_id', None)
raise Exception('Необходима авторизация')
else:
raise Exception('Необходима авторизация')
return decorated_function
2020-08-17 19:57:37 +03:00
2022-05-03 22:34:52 +03:00
jsonrpc = JSONRPC()
2020-08-17 19:57:37 +03:00
from . import ( # noqa F401
2020-02-08 05:04:27 +03:00
login,
2020-02-16 22:58:39 +03:00
note,
2023-02-18 09:22:43 +03:00
profile,
2019-10-27 19:40:03 +03:00
page,
tag,
user
)
2022-05-03 22:34:52 +03:00
app.add_url_rule('/api', view_func=APIView.as_view('api', jsonrpc=jsonrpc))
@jsonrpc.method('api.methods')
def api_methods() -> dict:
"""Список методов API
"""
result = {}
for method in jsonrpc.methods:
result[method] = jsonrpc.description(method)
return result