| | import axios from 'axios'; |
| | import type { OptionsResponse, GradeRequest, GradeResponse, FindAssistantsResponse } from '../types/index'; |
| |
|
| | const API_BASE_URL = import.meta.env.VITE_API_URL || '/api'; |
| |
|
| | const api = axios.create({ |
| | baseURL: API_BASE_URL, |
| | headers: { |
| | 'Content-Type': 'application/json', |
| | }, |
| | }); |
| |
|
| | |
| | api.interceptors.request.use((config) => { |
| | const passwordVerified = sessionStorage.getItem('app_password_verified'); |
| | if (passwordVerified === 'true') { |
| | config.headers['X-Password-Verified'] = 'true'; |
| | } |
| | return config; |
| | }); |
| |
|
| | export const gradingApi = { |
| | |
| | |
| | |
| | async getOptions(): Promise<OptionsResponse> { |
| | const response = await api.get<OptionsResponse>('/options'); |
| | return response.data; |
| | }, |
| |
|
| | |
| | |
| | |
| | async gradeText(request: GradeRequest): Promise<GradeResponse> { |
| | const response = await api.post<GradeResponse>('/grade', request); |
| | return response.data; |
| | }, |
| |
|
| | |
| | |
| | |
| | async verifyPassword(password: string): Promise<{ success: boolean, message?: string }> { |
| | const response = await axios.post(`${API_BASE_URL}/verify-password`, { password }); |
| | return response.data; |
| | }, |
| |
|
| | |
| | |
| | |
| | async getAssistants(): Promise<any> { |
| | const response = await api.get('/assistants'); |
| | return response.data; |
| | }, |
| |
|
| | |
| | |
| | |
| | async findAssistants(params: { |
| | language?: string; |
| | age_group?: string; |
| | category?: string; |
| | grading_mode?: string; |
| | }): Promise<FindAssistantsResponse> { |
| | const response = await api.get<FindAssistantsResponse>('/find-assistants', { params }); |
| | return response.data; |
| | }, |
| | }; |