Spaces:
Sleeping
Sleeping
from fastapi import APIRouter, HTTPException | |
from app.models.schema import GenerateRequest, GenerateResponse | |
from app.services.generator import coverLetterGenerativeAIBot | |
from app.services.resume_parser import extract_resume_text | |
from app.utils.file_utils import generate_unique_filename | |
from fastapi import UploadFile, File,Depends | |
from app.services.hf_storage_service import HuggingFaceStorageService | |
from app.auth.auth import verify_token | |
storage_service = HuggingFaceStorageService() | |
router = APIRouter() | |
async def generate_cover_letter_api(data: GenerateRequest,user=Depends(verify_token)): | |
try: | |
if len(data.job_details) > 8192: | |
raise HTTPException(status_code=400, detail="Job detail is too long") | |
resume_text = extract_resume_text(data.resume_path) | |
letter_text = await coverLetterGenerativeAIBot(data, resume_text) | |
# md_cover_letter = build_cover_letter_md( | |
# your_name=data.full_name, | |
# postal_code=data.postal_code, | |
# city=data.city, | |
# email=data.email, | |
# phone=data.phone_number, | |
# job_title=data.job_title, | |
# company_name=data.company_name, | |
# generated_paragraphs=letter_text | |
# ) | |
# text_cover_letter = convert_md_to_text(md_cover_letter) | |
filename = generate_unique_filename() | |
# pdf_path = save_pdf(text_cover_letter, filename) | |
return GenerateResponse( | |
letter=letter_text, | |
pdf_url="" | |
) | |
except HTTPException as http_exc: | |
raise http_exc | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
async def upload_resume(resume: UploadFile = File(...),user=Depends(verify_token)): | |
try: | |
resume_content = await resume.read() | |
resume_url = storage_service.upload_file_to_hf( | |
file_content=resume_content, | |
folder="resumes", | |
filename=resume.filename | |
) | |
return { | |
"success": True, | |
"url": resume_url | |
} | |
except Exception as e: | |
return { | |
"success": False, | |
"error": str(e) | |
} | |
async def upload_file(pdf: UploadFile = File(...),user=Depends(verify_token)): | |
try: | |
# Read resume content | |
pdf_content = await pdf.read() | |
# Upload to HuggingFace Hub | |
pdf_url = storage_service.upload_file_to_hf( | |
file_content=pdf_content, | |
folder="cover-letters", | |
filename=pdf.filename | |
) | |
return { | |
"success": True, | |
"url": pdf_url | |
} | |
except Exception as e: | |
return { | |
"success": False, | |
"error": str(e) | |
} | |