from typing import Any, Dict, List import requests import streamlit as st DEFAULT_BACKEND_URL = "http://localhost:8000" def _backend_url() -> str: try: return st.secrets["backend"]["url"] except (KeyError, FileNotFoundError): return DEFAULT_BACKEND_URL def _auth_headers(access_token: str) -> Dict[str, str]: return {"Authorization": f"Bearer {access_token}"} def health_check() -> Dict[str, Any]: response = requests.get(f"{_backend_url()}/api/v1/health", timeout=10) response.raise_for_status() return response.json() def analyze_resume( resume_file, access_token: str, job_description: str = "", ) -> Dict[str, Any]: files = { "resume": (resume_file.name, resume_file.getvalue(), resume_file.type), } data = {"job_description": job_description} response = requests.post( f"{_backend_url()}/api/v1/analyze-resume", files=files, data=data, headers=_auth_headers(access_token), timeout=180, ) response.raise_for_status() return response.json() def get_history(access_token: str) -> List[Dict[str, Any]]: response = requests.get( f"{_backend_url()}/api/v1/history", headers=_auth_headers(access_token), timeout=30, ) response.raise_for_status() return response.json() def delete_history_entry(analysis_id: str, access_token: str) -> None: response = requests.delete( f"{_backend_url()}/api/v1/history/{analysis_id}", headers=_auth_headers(access_token), timeout=30, ) response.raise_for_status() def generate_pdf(analysis_data: Dict[str, Any], access_token: str) -> bytes: response = requests.post( f"{_backend_url()}/api/v1/generate-pdf", json=analysis_data, headers=_auth_headers(access_token), timeout=60, ) response.raise_for_status() return response.content def get_history_pdf(analysis_id: str, access_token: str) -> bytes: response = requests.get( f"{_backend_url()}/api/v1/history/{analysis_id}/pdf", headers=_auth_headers(access_token), timeout=60, ) response.raise_for_status() return response.content