from flask import Flask, jsonify, request from xmpp import cli from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, create_access_token from datetime import timedelta from config import Config from SharixQuery import SharixQuery #from OpenSSL import SSL #context = SSL.Context(SSL.PROTOCOL_TLSv1_2) #context.use_privatekey_file('server.key') #context.use_certificate_file('server.crt') ### ssl_context=context in run #Инициализация класс для запросов к базе данны db_query = SharixQuery() #Инициализация Flask app = Flask(__name__) #Добавление секртного слова для шифрования JWT app.config.from_object(Config) #Инициализация класса шифрования jwt = JWTManager(app) #Переменные чтобы не ошибиться data = 'data' code = 'httpcode' #Генерация токена (id - данные которые шифруются, min - время действия токена) #Используются при авторизации или регистрации (возможно выдавать и при других обстоятельствах) def gen_token(id, min): token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=min))} return jsonify(token) #Ошибка сервера (возвращает ошибку и код ошибки) def err_mes(ex): return jsonify({"msg":str(ex)}), 500 #Авторизация пользователя @app.route('/auth', methods=['POST']) def post_auth(): try: result = db_query.auth_query(request.get_json()) return gen_token(result[data]['id'], 5), result[code] except Exception as ex: return err_mes(ex) #Добавление пользователя и проверка на сходства @app.route('/adduser', methods=['POST']) def get_add(): try: result = db_query.add_query(request.get_json()) return jsonify(result[data]), result[code] except Exception as ex: err_mes(ex) #Запрос на получение данных об одном пользователе @app.route('/user/', methods=['GET']) def get_user(id): try: result = db_query.get_user_query(id) return jsonify(result[data]), result[code] except Exception as ex: return err_mes(ex) #Запрос на получение данных всех пользователей @app.route('/users', methods=['GET']) def get_show_user(): try: result = db_query.get_all_user_query() return jsonify(result[data]), result[code] except Exception as ex: return err_mes(ex) #Удаление пользователя @app.route('/deleteuser', methods=['POST']) def delete_user(): try: result = db_query.delete_user_query(request.get_json()) return jsonify(result[data]), result[code] except Exception as ex: return err_mes(ex) #Обновление данных пользователя @app.route('/updateuser', methods=['POST']) @jwt_required() def test_api(): try: result = db_query.update_user_query(request.get_json(), get_jwt_identity()) return jsonify(result[data]), result[code] except Exception as ex: return err_mes(ex) #Отправка сообщения через XMPP @app.route('/testmessage', methods=['POST']) def send_mess(): try: request_data = request.get_json() for to in request_data['to']: cli.send_message(request_data['from'], request_data['password'], to, request_data['message']) return jsonify({"msg":"Succes send!"}), 200 except Exception as ex: return err_mes(ex) @app.route('/testaddcarlog', methods=['POST']) def test_add_car_log(): try: result = db_query.add_car_log(request.get_json()) return gen_token(result[data], 5), result[code] except Exception as ex: return err_mes(ex) if __name__ == '__main__': #from waitress import serve #serve(app, host='127.0.0.2', port='8080') app.run(host='127.0.0.2', port='8080', debug=True, load_dotenv=True )