51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from flask import Flask
|
|
from database import Database
|
|
|
|
|
|
def create_app(config_object):
|
|
app = Flask(__name__)
|
|
app.config.from_object(config_object)
|
|
|
|
app.json.sort_keys = False
|
|
app.url_map.strict_slashes = False
|
|
|
|
database = Database()
|
|
database.init_app(app)
|
|
|
|
configure_blueprints(app, database)
|
|
return app
|
|
|
|
|
|
def configure_blueprints(app, database):
|
|
from api.views.historical import HistoricalView
|
|
from api.views.sma import SmaView
|
|
from api.views.ticker import TickerView
|
|
from api.service.historical import HistoricalService
|
|
from api.service.sma import SmaService
|
|
from api.service.ticker import TickerService
|
|
|
|
|
|
historical_service = HistoricalService(database=database)
|
|
historical_view = HistoricalView.as_view("historical", service=historical_service)
|
|
historical_url = "/api/v1/historical/<string:ticker>"
|
|
|
|
sma_service = SmaService(database=database)
|
|
sma_view = SmaView.as_view("sma", service=sma_service)
|
|
sma_url = "/api/v1/indicators/sma/<string:ticker>"
|
|
|
|
tickers_service = TickerService(database=database)
|
|
tickers_view = TickerView.as_view("tickers", service=tickers_service)
|
|
tickers_url = "/api/v1/tickers"
|
|
|
|
|
|
# Register routes with HTTP methods.
|
|
app.add_url_rule(historical_url, view_func=historical_view, methods=["GET"])
|
|
app.add_url_rule(sma_url, view_func=sma_view, methods=["GET"])
|
|
app.add_url_rule(tickers_url, view_func=tickers_view, methods=["GET"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
from api.config import ApiConfig
|
|
|
|
app = create_app(ApiConfig)
|
|
app.run(host="localhost", port=3000, debug=True) |