api.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. from flask import Flask, jsonify, request
  2. from xmpp import cli
  3. from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, create_access_token
  4. from datetime import timedelta
  5. from api_config import Config
  6. from BackendApi.SharixQuery import SharixQuery
  7. #from OpenSSL import SSL
  8. #context = SSL.Context(SSL.PROTOCOL_TLSv1_2)
  9. #context.use_privatekey_file('server.key')
  10. #context.use_certificate_file('server.crt')
  11. ### ssl_context=context in run
  12. #Инициализация класс для запросов к базе данны
  13. db_query = SharixQuery()
  14. #Инициализация Flask
  15. app = Flask(__name__)
  16. #Добавление секртного слова для шифрования JWT
  17. app.config.from_object(Config)
  18. #Инициализация класса шифрования
  19. jwt = JWTManager(app)
  20. #Переменные чтобы не ошибиться
  21. data = 'data'
  22. code = 'httpcode'
  23. #Генерация токена (id - данные которые шифруются, min - время действия токена)
  24. #Используются при авторизации или регистрации (возможно выдавать и при других обстоятельствах)
  25. def gen_token(id, min):
  26. token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=min))}
  27. return jsonify(token)
  28. #Ошибка сервера (возвращает ошибку и код ошибки)
  29. def err_mes(ex):
  30. return jsonify({"msg":str(ex)}), 500
  31. #Авторизация пользователя
  32. @app.route('/auth', methods=['POST'])
  33. def post_auth():
  34. try:
  35. result = db_query.auth_query(request.get_json())
  36. return gen_token(result[data]['id'], 5), result[code]
  37. except Exception as ex:
  38. return err_mes(ex)
  39. #Добавление пользователя и проверка на сходства
  40. @app.route('/adduser', methods=['POST'])
  41. def get_add():
  42. try:
  43. result = db_query.add_query(request.get_json())
  44. return jsonify(result[data]), result[code]
  45. except Exception as ex:
  46. err_mes(ex)
  47. #Запрос на получение данных об одном пользователе
  48. @app.route('/user/<int:id>', methods=['GET'])
  49. def get_user(id):
  50. try:
  51. result = db_query.get_user_query(id)
  52. return jsonify(result[data]), result[code]
  53. except Exception as ex:
  54. return err_mes(ex)
  55. #Запрос на получение данных всех пользователей
  56. @app.route('/users', methods=['GET'])
  57. def get_show_user():
  58. try:
  59. result = db_query.get_all_user_query()
  60. return jsonify(result[data]), result[code]
  61. except Exception as ex:
  62. return err_mes(ex)
  63. #Удаление пользователя
  64. @app.route('/deleteuser', methods=['POST'])
  65. def delete_user():
  66. try:
  67. result = db_query.delete_user_query(request.get_json())
  68. return jsonify(result[data]), result[code]
  69. except Exception as ex:
  70. return err_mes(ex)
  71. #Обновление данных пользователя
  72. @app.route('/updateuser', methods=['POST'])
  73. @jwt_required()
  74. def test_api():
  75. try:
  76. result = db_query.update_user_query(request.get_json(), get_jwt_identity())
  77. return jsonify(result[data]), result[code]
  78. except Exception as ex:
  79. return err_mes(ex)
  80. #Отправка сообщения через XMPP
  81. @app.route('/testmessage', methods=['POST'])
  82. def send_mess():
  83. try:
  84. request_data = request.get_json()
  85. for to in request_data['to']:
  86. cli.send_message(request_data['from'], request_data['password'], to, request_data['message'])
  87. return jsonify({"msg":"Succes send!"}), 200
  88. except Exception as ex:
  89. return err_mes(ex)
  90. @app.route('/testaddcarlog', methods=['POST'])
  91. def test_add_car_log():
  92. try:
  93. result = db_query.add_car_log(request.get_json())
  94. return gen_token(result[data], 5), result[code]
  95. except Exception as ex:
  96. return err_mes(ex)
  97. if __name__ == '__main__':
  98. #from waitress import serve
  99. #serve(app, host='127.0.0.2', port='8080')
  100. app.run(host='127.0.0.2', port='8080', debug=True, load_dotenv=True )