Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1fa243ca

Přidáno uživatelem Jan Pašek před asi 4 roky(ů)

Re #8569 Added application initialization and running dependency injection

Zobrazit rozdíly:

app.py
1
from flask import Flask, redirect
2 1
import os
2

  
3
from flask import Flask, redirect
4
from injector import Injector
5

  
6
from src.config import configuration
7
from src.config.connection_provider import ConnectionProvider
3 8
from src.controllers.certificates_controller import CertController
4 9

  
5
app = Flask(__name__)
10

  
11
class X509ManagementApp(Flask):
12

  
13
    def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):
14
        with self.app_context():
15
            initialize_app()
16
        super(X509ManagementApp, self).run(host=host, port=port, debug=debug, load_dotenv=load_dotenv, **options)
17

  
18

  
19
app = X509ManagementApp(__name__)
20
certificate_controller: CertController = None
6 21

  
7 22

  
8 23
@app.route('/')
......
12 27

  
13 28
@app.route('/api/certificates', methods=["POST"])
14 29
def create_certificate():
15
    return CertController.create_certificate()
30
    return certificate_controller.create_certificate()
16 31

  
17 32

  
18 33
@app.route('/api/certificates', methods=["GET"])
19 34
def get_cert_list():
20
    return CertController.get_certificate_list()
35
    return certificate_controller.get_certificate_list()
21 36

  
22 37

  
23 38
@app.route('/api/certificates/<id>', methods=["GET"])
24 39
def get_cert(id):
25
    return CertController.get_certificate_by_id(id)
40
    return certificate_controller.get_certificate_by_id(id)
26 41

  
27 42

  
28 43
@app.route('/api/certificates/<id>/details', methods=["GET"])
29
def get_cert_detes(id):
30
    return CertController.get_certificate_details_by_id(id)
44
def get_cert_details(id):
45
    return certificate_controller.get_certificate_details_by_id(id)
31 46

  
32 47

  
33 48
@app.route('/api/certificates/<id>/root', methods=["GET"])
34 49
def get_cert_root(id):
35
    return CertController.get_certificate_root_by_id(id)
50
    return certificate_controller.get_certificate_root_by_id(id)
36 51

  
37 52

  
38 53
@app.route('/api/certificates/<id>/chain', methods=["GET"])
39 54
def get_cert_chain(id):
40
    return CertController.get_certificate_trust_chain_by_id(id)
55
    return certificate_controller.get_certificate_trust_chain_by_id(id)
56

  
57

  
58
def initialize_app():
59
    global certificate_controller
60

  
61
    injector = Injector([configuration.configure_default, ConnectionProvider])
62
    certificate_controller = injector.get(CertController)
41 63

  
42 64

  
43 65
if __name__ == '__main__':
44
    host = "0.0.0.0"
45
    port = 5000
66
    app_host = "0.0.0.0"
67
    app_port = 5000
46 68

  
47 69
    # TODO better load this from config.py
48 70
    if "FLASK_HOST" in os.environ:
49
        host = os.environ["FLASK_HOST"]
71
        app_host = os.environ["FLASK_HOST"]
50 72

  
51 73
    if "FLASK_PORT" in os.environ:
52
        host = os.environ["FLASK_PORT"]
74
        app_host = os.environ["FLASK_PORT"]
53 75

  
54
    app.run(host=host, port=port)
76
    app.run(host=app_host, port=app_port)

Také k dispozici: Unified diff