auto-commit for 8a62051e-b038-4363-a62d-7047e3d6e102

This commit is contained in:
emergent-agent-e1
2026-03-16 18:22:14 +00:00
parent 706e3e2eb6
commit 6a9e343332
16 changed files with 1510 additions and 212 deletions
+112
View File
@@ -0,0 +1,112 @@
import axios from 'axios';
const BACKEND_URL = process.env.REACT_APP_BACKEND_URL;
const API = `${BACKEND_URL}/api`;
// Create axios instance
const apiClient = axios.create({
baseURL: API,
headers: {
'Content-Type': 'application/json',
},
});
// Add auth token to requests if available
apiClient.interceptors.request.use((config) => {
const token = localStorage.getItem('auth_token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
// Auth API
export const authAPI = {
login: async (email, password) => {
const response = await apiClient.post('/auth/login', { email, password });
return response.data;
},
verify: async () => {
const response = await apiClient.post('/auth/verify');
return response.data;
},
};
// Destinations API
export const destinationsAPI = {
getAll: async (category, search) => {
const params = {};
if (category) params.category = category;
if (search) params.search = search;
const response = await apiClient.get('/destinations', { params });
return response.data;
},
getById: async (id) => {
const response = await apiClient.get(`/destinations/${id}`);
return response.data;
},
create: async (destination) => {
const response = await apiClient.post('/destinations', destination);
return response.data;
},
update: async (id, destination) => {
const response = await apiClient.put(`/destinations/${id}`, destination);
return response.data;
},
delete: async (id) => {
const response = await apiClient.delete(`/destinations/${id}`);
return response.data;
},
};
// Specials API
export const specialsAPI = {
getAll: async () => {
const response = await apiClient.get('/specials');
return response.data;
},
create: async (special) => {
const response = await apiClient.post('/specials', special);
return response.data;
},
update: async (id, special) => {
const response = await apiClient.put(`/specials/${id}`, special);
return response.data;
},
deleteByDestination: async (destinationId) => {
const response = await apiClient.delete(`/specials/destination/${destinationId}`);
return response.data;
},
};
// Contact API
export const contactAPI = {
submit: async (contact) => {
const response = await apiClient.post('/contact', contact);
return response.data;
},
};
// Newsletter API
export const newsletterAPI = {
subscribe: async (email) => {
const response = await apiClient.post('/newsletter/subscribe', { email });
return response.data;
},
};
// Image Upload API
export const uploadAPI = {
uploadImage: async (file) => {
const formData = new FormData();
formData.append('file', file);
const response = await apiClient.post('/upload/image', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
});
return response.data;
},
};
export default apiClient;