finance-api/rest_api.py

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)