36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from fastapi import APIRouter,Depends, Query
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi import HTTPException
|
|
from db_setup import get_session
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from inbox.views import Email
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/email/fetch")
|
|
async def fetch_email(top:int=Query(100),skip:int=Query(0,ge=0),token=Query(...),session: AsyncSession = Depends(get_session)):
|
|
try:
|
|
if not token:
|
|
raise HTTPException(status_code=401,detail="Unauthorized")
|
|
service=Email(session=session,token=token)
|
|
data=await service.service_email(top,skip)
|
|
value=data.get("value")
|
|
items_lst=[]
|
|
for item in value:
|
|
message_id=item.get("id")
|
|
service_per_email=await service.get_email_by_id(message_id)
|
|
items_lst.append({"message_id":message_id,"email_contents":service_per_email})
|
|
|
|
|
|
return JSONResponse(content={"data":items_lst,"status_code":200})
|
|
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500,detail=str(e))
|
|
|
|
|
|
@router.post("/inbox/fetch")
|
|
async def fetch_inbox(session: AsyncSession = Depends(get_session)):
|
|
pass
|