from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi import FastAPI, Request, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from utils import fetcher
app = FastAPI(swagger_ui_parameters={"syntaxHighlight.theme": "obsidian"})
fetcher = StockDataFetcher()
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
return templates.TemplateResponse("hello.html", {"request": request})
@app.get('/ltp')
async def get_data(ticker: str):
try:
response = fetcher.fetch_latest_price(ticker)
return {'ltp' :response}
except:
return {"Timeout" : "Error"}
@app.get('/historical')
async def get_stocks_data(ticker: str, intervals: int, days: int):
try:
response = fetcher.fetch_stock_data(ticker, 15, 10).to_dict(orient="records")
return response
except:
return {"data" : response}