hs_fast_api / main.py
David Li
fix: again
8ca5d50
from fastapi import FastAPI
import pandas as pd
import os
from deta import Deta
from fastapi.responses import StreamingResponse, FileResponse
from io import BytesIO
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
# load deta using
project_key = os.getenv("DETA_DRIVE_KEY")
deta = Deta(project_key)
drive = deta.Drive("stonk_events")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/files")
async def get_files(exchange: str = "US"):
"""
"""
# get files in deta
result = drive.list()
all_files = result.get("names")
paging = result.get("paging")
last = paging.get("last") if paging else None
while (last):
# provide last from previous call
result = drive.list(last=last)
all_files += result.get("names")
# update last
paging = result.get("paging")
last = paging.get("last") if paging else None
return all_files
# get file by name from deta /file/{id}
# reason it was likely failing is because of the response size limit
@app.get("/file/{id}")
async def get_file(id: str):
res = drive.get(id)
return StreamingResponse(res.iter_chunks(1024), media_type="application/pdf")