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/" sma_service = SmaService(database=database) sma_view = SmaView.as_view("sma", service=sma_service) sma_url = "/api/v1/indicators/sma/" 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)