FriendlyUser/hs_fast_api
0
1from fastapi import FastAPI2import pandas as pd3import os4from deta import Deta5from fastapi.responses import StreamingResponse, FileResponse6from io import BytesIO7 8from fastapi.middleware.cors import CORSMiddleware9 10app = FastAPI()11 12# load deta using 13project_key = os.getenv("DETA_DRIVE_KEY")14deta = Deta(project_key)15drive = deta.Drive("stonk_events")16 17app.add_middleware(18 CORSMiddleware,19 allow_origins=["*"],20 allow_credentials=True,21 allow_methods=["*"],22 allow_headers=["*"],23)24 25@app.get("/files")26async def get_files(exchange: str = "US"):27 """28 """29 30 # get files in deta31 result = drive.list()32 all_files = result.get("names")33 paging = result.get("paging")34 last = paging.get("last") if paging else None35 36 while (last):37 # provide last from previous call38 result = drive.list(last=last)39 40 all_files += result.get("names")41 # update last42 paging = result.get("paging")43 last = paging.get("last") if paging else None44 return all_files45 46 47# get file by name from deta /file/{id}48# reason it was likely failing is because of the response size limit49@app.get("/file/{id}")50async def get_file(id: str):51 res = drive.get(id)52 return StreamingResponse(res.iter_chunks(1024), media_type="application/pdf")53 