ipns-poc-eval / src /services /_file_service.py
Aryan Jain
update extract word
f66027e
import io
from fastapi import File, UploadFile
from src.utils import FileClient
class FileService:
def __init__(self):
self.file_client = FileClient
async def __aenter__(self):
return self
async def __aexit__(self, exc_type, exc_value, traceback):
pass
async def extract_file(self, file: UploadFile = File(...)):
file_content = await file.read()
file_bytes = io.BytesIO(file_content)
file_type = file.content_type
async with self.file_client() as client:
if file_type == "application/pdf":
return await client.extract_from_pdf(file_bytes=file_bytes)
elif file_type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
return await client.extrcat_from_word(file_bytes=file_bytes)
elif file_type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
return await client.extract_from_excel(file_bytes=file_bytes)
elif file_type == "application/json":
return await client.extract_from_json(file_bytes=file_bytes)
elif file_type == "text/markdown":
return await client.extrcat_from_md(file_bytes=file_bytes)
elif file_type == "text/plain":
return await client.extract_from_txt(file_bytes=file_bytes)
elif file_type == "text/csv":
return await client.extract_from_csv(file_bytes=file_bytes)
else:
raise ValueError("Unsupported file type")