· 4 years ago · Jan 25, 2021, 11:22 PM
1from flask import Flask, Blueprint
2from flask_restful import Api, Resource, reqparse
3
4app = Flask(__name__)
5api_bp = Blueprint('api', __name__)
6api = Api(api_bp)
7parser = reqparse.RequestParser()
8parser.add_argument('status')
9parser.add_argument('error')
10parser.add_argument('transaction')
11
12
13class Status(Resource):
14 def post(self, app_id):
15 args = parser.parse_args()
16 print(f'Статус приложения {app_id}: {args.status}')
17 answer = {}
18 return answer
19
20
21class Errors(Resource):
22 def post(self, app_id):
23 args = parser.parse_args()
24 print(f'Ошибка в приложении {app_id}: {args.error}')
25 answer = {}
26 return answer
27
28
29class Transaction(Resource):
30 def post(self, app_id):
31 args = parser.parse_args()
32 print(f'Получена транзакция от приложения {app_id}: {args.transaction}')
33 answer = {'command': 'Транзакция получена сервером'}
34 return answer
35
36
37class Alarm(Resource):
38 def post(self, app_id):
39 print(f'Попытка взлома в приложении {app_id}, перезагрузить систему')
40 answer = {'command': 'reload'}
41 return answer
42
43
44api.add_resource(Status, '/api/status/<int:app_id>')
45api.add_resource(Errors, '/api/error/<int:app_id>')
46api.add_resource(Transaction, '/api/transaction/<int:app_id>')
47api.add_resource(Alarm, '/api/alarm/<int:app_id>')
48app.register_blueprint(api_bp)
49
50import os
51from config import configs
52
53evn = os.environ.get('FLASK_ENV', 'default')
54app.config.from_object(configs[evn])
55
56if __name__ == '__main__':
57 app.run()
58
59
60import os
61
62
63class Config(object):
64 DEBUG = False
65 TESTING = False
66 SECRET_KEY = os.environ.get('SECRET_KEY', 'default secret')
67
68
69class ProductionConfig(Config):
70 pass
71
72
73class DevelopmentConfig(Config):
74 DEBUG = True
75
76
77class TestingConfig(Config):
78 TESTING = True
79
80
81configs = {
82 'dev': DevelopmentConfig,
83 'test': TestingConfig,
84 'prod': ProductionConfig,
85 'default': DevelopmentConfig
86}
87