// API Client for making requests to the backend class APIClient { constructor() { this.baseURL = '/api'; } async makeRequest(endpoint, options = {}) { const config = { headers: { 'Content-Type': 'application/json', ...options.headers }, ...options }; try { const response = await fetch(`${this.baseURL}${endpoint}`, config); const data = await response.json(); if (!response.ok) { throw new Error(data.error || data.message || `HTTP ${response.status}`); } return data; } catch (error) { console.error('API request failed:', error); throw error; } } async get(endpoint) { return this.makeRequest(endpoint, { method: 'GET' }); } async post(endpoint, data) { return this.makeRequest(endpoint, { method: 'POST', body: JSON.stringify(data) }); } // Health check async checkHealth() { return this.get('/health'); } // Test Represent API connection async testRepresent() { return this.get('/test-represent'); } // Get representatives by postal code async getRepresentativesByPostalCode(postalCode) { const cleanPostalCode = postalCode.replace(/\s/g, '').toUpperCase(); return this.get(`/representatives/by-postal/${cleanPostalCode}`); } // Refresh representatives for postal code async refreshRepresentatives(postalCode) { const cleanPostalCode = postalCode.replace(/\s/g, '').toUpperCase(); return this.post(`/representatives/refresh-postal/${cleanPostalCode}`); } // Send email to representative async sendEmail(emailData) { return this.post('/emails/send', emailData); } } // Create global instance window.apiClient = new APIClient();