-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
executable file
·92 lines (69 loc) · 2.99 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import os
from flask import Flask, request
from flask_migrate import Migrate
from flask_restful import Api
from config import Config
from extensions import db, jwt, image_set, cache, limiter
from flask_uploads import configure_uploads, patch_request_class
from resources.user import UserListResource, UserResource, MeResource, UserPoliticianListResource, UserActivateResource, UserAvatarUploadResource
from resources.token import TokenResource, RefreshResource, RevokeResource, black_list
from resources.politician import PoliticianListResource, PoliticianResource, PoliticianPublishResource, PoliticianCoverUploadResource
def create_app():
env = os.environ.get('ENV', 'Development')
if env == 'Production':
config_str = 'config.ProductionConfig'
elif env == 'Stagin':
config_str = 'config.StagingConfig'
else:
config_str = 'config.DevelopmentConfig'
app = Flask(__name__)
app.config.from_object(config_str)
register_extensions(app)
register_resources(app)
return app
def register_extensions(app):
db.app = app
db.init_app(app)
migrate = Migrate(app, db)
jwt.init_app(app)
configure_uploads(app, image_set)
patch_request_class(app, 10 * 1024 * 1024)
cache.init_app(app)
limiter.init_app(app)
@jwt.token_in_blacklist_loader
def check_if_token_in_blacklist(decrypted_token):
jti = decrypted_token['jti']
return jti in black_list
# app.before_request
# def before_request():
# print('\n==================== BEFORE REQUEST ====================\n')
# print(cache.cache._cache.keys())
# print('\n=======================================================\n')
#
# @app.after_request
# def after_request(response):
# print('\n==================== AFTER REQUEST ====================\n')
# print(cache.cache._cache.keys())
# print('\n=======================================================\n')
# return response
#@limiter.request_filter
#def ip_whitelist():
# return request.remote_addr == '127.0.0.1'
def register_resources(app):
api = Api(app)
api.add_resource(UserListResource, '/users')
api.add_resource(UserResource, '/users/<string:username>')
api.add_resource(UserPoliticianListResource, '/users/<string:username>/politicians')
api.add_resource(UserActivateResource, '/users/activate/<string:token>')
api.add_resource(UserAvatarUploadResource, '/users/avatar')
api.add_resource(MeResource, '/me')
api.add_resource(TokenResource, '/token')
api.add_resource(RefreshResource, '/refresh')
api.add_resource(RevokeResource, '/revoke')
api.add_resource(PoliticianListResource, '/politicians')
api.add_resource(PoliticianResource, '/politicians/<int:politician_id>')
api.add_resource(PoliticianPublishResource, '/politicians/<int:politician_id>/publish')
api.add_resource(PoliticianCoverUploadResource, '/politicians/<int:politician_id>/cover')
if __name__ == '__main__':
app = create_app()
app.run(debug=True)