Spaces:
Configuration error
Configuration error
Download frontend/src/lib/api.ts from Sivaneshakumar/sanjeevani-api: direct link, hf CLI and curl.
- Browser
- Download file 2.53 kB
-
https://huggingface.co/spaces/Sivaneshakumar/sanjeevani-api/resolve/main/frontend/src/lib/api.ts
- Command line
-
hf download hf://spaces/Sivaneshakumar/sanjeevani-api/frontend/src/lib/api.ts
-
curl -L -o api.ts https://huggingface.co/spaces/Sivaneshakumar/sanjeevani-api/resolve/main/frontend/src/lib/api.ts
2.53 kB
| import axios from "axios"; | |
| const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api/v1"; | |
| export const api = axios.create({ | |
| baseURL: API_BASE_URL, | |
| headers: { | |
| "Content-Type": "application/json", | |
| }, | |
| }); | |
| // Attach JWT access token to all outgoing requests | |
| api.interceptors.request.use((config) => { | |
| if (typeof window !== "undefined") { | |
| const token = localStorage.getItem("sanjeevani_token"); | |
| if (token) { | |
| config.headers.Authorization = `Bearer ${token}`; | |
| } | |
| } | |
| return config; | |
| }); | |
| // Response interceptor for handling 401s | |
| api.interceptors.response.use( | |
| (response) => response, | |
| (error) => { | |
| if (error.response && error.response.status === 401) { | |
| if (typeof window !== "undefined" && !window.location.pathname.includes("/login")) { | |
| // Optional session expired redirect | |
| } | |
| } | |
| return Promise.reject(error); | |
| } | |
| ); | |
| // Typed API services | |
| export const authApi = { | |
| login: (data: any) => api.post("/auth/login", data), | |
| register: (data: any) => api.post("/auth/register", data), | |
| getMe: () => api.get("/auth/me"), | |
| refresh: (refresh_token: string) => api.post("/auth/refresh", { refresh_token }), | |
| }; | |
| export const nerApi = { | |
| analyze: (text: string) => api.post("/ner/analyze", { text }), | |
| getModelInfo: () => api.get("/ner/model-info"), | |
| }; | |
| export const documentApi = { | |
| upload: (formData: FormData) => | |
| api.post("/documents/upload", formData, { | |
| headers: { "Content-Type": "multipart/form-data" }, | |
| }), | |
| list: () => api.get("/documents"), | |
| getById: (id: string) => api.get(`/documents/${id}`), | |
| delete: (id: string) => api.delete(`/documents/${id}`), | |
| }; | |
| export const chatApi = { | |
| sendMessage: (message: string, conversation_id?: string) => | |
| api.post("/chat/message", { message, conversation_id }), | |
| listConversations: () => api.get("/chat/conversations"), | |
| getConversation: (id: string) => api.get(`/chat/conversations/${id}`), | |
| deleteConversation: (id: string) => api.delete(`/chat/conversations/${id}`), | |
| }; | |
| export const profileApi = { | |
| getProfile: () => api.get("/profile"), | |
| updateProfile: (data: any) => api.put("/profile", data), | |
| }; | |
| export const historyApi = { | |
| getHistory: (limit: number = 50) => api.get(`/history?limit=${limit}`), | |
| }; | |
| export const adminApi = { | |
| getStats: () => api.get("/admin/stats"), | |
| getAuditLogs: (limit: number = 100) => api.get(`/admin/audit-logs?limit=${limit}`), | |
| }; | |
| export const healthApi = { | |
| getHealth: () => api.get("/health"), | |
| getReady: () => api.get("/ready"), | |
| }; | |