pvanand commited on
Commit
1cf0ddf
·
verified ·
1 Parent(s): a6517ab

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +24 -14
main.py CHANGED
@@ -10,6 +10,7 @@ from fastapi.middleware.cors import CORSMiddleware
10
  from utils import read_file, fetch_job_description, optimize_resume_api
11
  import logging
12
  import os
 
13
  API_SECRET = os.getenv("API_SECRET")
14
 
15
  # Set up logging
@@ -22,10 +23,6 @@ app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_credentials=True,
22
 
23
  security = HTTPBearer()
24
 
25
- class OptimizationResponse(BaseModel):
26
- optimizedResume: str
27
- metadata: dict
28
-
29
  class ErrorResponse(BaseModel):
30
  detail: str
31
 
@@ -35,6 +32,13 @@ def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)):
35
  raise HTTPException(status_code=401, detail="Invalid authentication token")
36
  return token
37
 
 
 
 
 
 
 
 
38
  @app.post("/api/v1/optimize-resume", response_model=OptimizationResponse, responses={400: {"model": ErrorResponse}, 401: {"model": ErrorResponse}, 500: {"model": ErrorResponse}})
39
  async def optimize_resume(
40
  resume: Optional[UploadFile] = File(None),
@@ -63,16 +67,22 @@ async def optimize_resume(
63
  job_description_content = fetch_job_description(jobDescriptionUrl)
64
 
65
  # Perform optimization
66
- optimized_resume = optimize_resume_api(resume_content, job_description_content)
67
-
68
- metadata = {
69
- "original_resume":resume_content,
70
- "original_jd": job_description_content}
71
-
72
- return OptimizationResponse(
73
- optimizedResume=optimized_resume,
74
- metadata=metadata
75
- )
 
 
 
 
 
 
76
  except ValueError as ve:
77
  logger.error(f"ValueError occurred: {str(ve)}", exc_info=True)
78
  raise HTTPException(status_code=400, detail=str(ve))
 
10
  from utils import read_file, fetch_job_description, optimize_resume_api
11
  import logging
12
  import os
13
+ from fastapi.responses import JSONResponse
14
  API_SECRET = os.getenv("API_SECRET")
15
 
16
  # Set up logging
 
23
 
24
  security = HTTPBearer()
25
 
 
 
 
 
26
  class ErrorResponse(BaseModel):
27
  detail: str
28
 
 
32
  raise HTTPException(status_code=401, detail="Invalid authentication token")
33
  return token
34
 
35
+ import re
36
+
37
+ def extract_xml_content(text, tag):
38
+ pattern = f"<{tag}>(.*?)</{tag}>"
39
+ matches = re.findall(pattern, text, re.DOTALL)
40
+ return matches
41
+
42
  @app.post("/api/v1/optimize-resume", response_model=OptimizationResponse, responses={400: {"model": ErrorResponse}, 401: {"model": ErrorResponse}, 500: {"model": ErrorResponse}})
43
  async def optimize_resume(
44
  resume: Optional[UploadFile] = File(None),
 
67
  job_description_content = fetch_job_description(jobDescriptionUrl)
68
 
69
  # Perform optimization
70
+ output = optimize_resume_api(resume_content, job_description_content)
71
+ optimized_resume = extract_xml_content(output, "optimized_resume")
72
+ changes_made = extract_xml_content(output, "changes_made")
73
+
74
+ # Prepare the response
75
+ response_data = {
76
+ "optimizedResume": optimized_resume[0] if optimized_resume else "",
77
+ "changesMade": changes_made[0] if changes_made else "",
78
+ "metadata": {
79
+ "original_resume": resume_content,
80
+ "original_jd": job_description_content
81
+ }
82
+ }
83
+
84
+ return JSONResponse(content=response_data)
85
+
86
  except ValueError as ve:
87
  logger.error(f"ValueError occurred: {str(ve)}", exc_info=True)
88
  raise HTTPException(status_code=400, detail=str(ve))