import axios, { AxiosInstance } from "axios";
import https from "https";
import { config } from "../config/index.js";
// Create axios instance with WordPress API configuration
export const createApiClient = (): AxiosInstance => {
const api = axios.create({
baseURL: `${config.wordpressUrl}/wp-json/fluent-boards/v2`,
auth: {
username: config.username,
password: config.appPassword,
},
headers: {
"Content-Type": "application/json",
},
httpsAgent: new https.Agent({
rejectUnauthorized: false, // For development with self-signed certificates
}),
});
// Add request interceptor for logging
api.interceptors.request.use((config) => {
console.error(`API Request: ${config.method?.toUpperCase()} ${config.url}`);
return config;
});
// Add response interceptor for error handling
api.interceptors.response.use(
(response) => response,
(error) => {
console.error(
`API Error: ${error.response?.status} ${error.response?.statusText}`
);
if (error.response?.data) {
console.error("Error details:", error.response.data);
}
throw error;
}
);
return api;
};
// Export a default instance
export const api = createApiClient();
export default api;