from sqlalchemy.ext.asyncio import AsyncSession import os,logging,io from fastapi import HTTPException from pypdf import PdfReader from sqlalchemy import select from job.candidate.plugins import normalize_spaced_text class FileRead: def __init__(self,session:AsyncSession,filename=None,file=None): self.session=session self.filename=filename self.file=file async def read_file(self,file=None,filename=None): try: reader = PdfReader(io.BytesIO(self.file)) if reader.is_encrypted: raise HTTPException(400, "PDF is password protected") pages = [(page.extract_text() or "") for page in reader.pages] return { "filename": self.filename, "num_pages": len(reader.pages), "text": normalize_spaced_text("\n".join(pages)), } except HTTPException: raise except Exception as e: raise HTTPException(400, str(e)) # async def get_intention(self,input): # try: # get_subject=Inbox_Messages.candidate_x_inbox(self.session,self.candidate_id) # get_file=