@oraichain/oraidex-evm-sdk
Version:
Oraidex EVM SDK
89 lines • 2.62 kB
JavaScript
import axios from 'axios';
// Default config
const defaultConfig = {
timeout: 30000, // 30 seconds
headers: {
'Content-Type': 'application/json',
},
};
// Create axios instance with default config
const createAxiosInstance = (config = {}) => {
const instance = axios.create({
...defaultConfig,
...config,
});
// Response interceptor
instance.interceptors.response.use((response) => {
return response;
}, (error) => {
// Handle common errors
if (error.response) {
// Server responded with error status
const errorResponse = {
message: error.response.data?.message || 'An error occurred',
status: error.response.status,
errors: error.response.data?.errors,
};
return Promise.reject(errorResponse);
}
else if (error.request) {
// Request was made but no response received
return Promise.reject({
message: 'No response received from server',
status: 0,
});
}
else {
// Something else happened
return Promise.reject({
message: error.message || 'An error occurred',
status: 0,
});
}
});
return instance;
};
// API methods
export class ApiClient {
constructor(config) {
this.instance = createAxiosInstance(config);
}
async get(url, config) {
const response = await this.instance.get(url, config);
return {
data: response.data,
status: response.status,
};
}
async post(url, data, config) {
const response = await this.instance.post(url, data, config);
return {
data: response.data,
status: response.status,
};
}
async put(url, data, config) {
const response = await this.instance.put(url, data, config);
return {
data: response.data,
status: response.status,
};
}
async delete(url, config) {
const response = await this.instance.delete(url, config);
return {
data: response.data,
status: response.status,
};
}
async patch(url, data, config) {
const response = await this.instance.patch(url, data, config);
return {
data: response.data,
status: response.status,
};
}
}
// Create default instance
export const apiClient = new ApiClient();
//# sourceMappingURL=ApiClient.js.map