justsend-sdk
Version:
TypeScript SDK for Justsend SMS Marketing API
95 lines • 3.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpClient = void 0;
const axios_1 = __importDefault(require("axios"));
class HttpClient {
constructor(config) {
this.apiKey = config.apiKey;
this.axiosInstance = axios_1.default.create({
baseURL: config.baseURL || "https://justsend.io/api",
timeout: config.timeout || 30000,
headers: {
"Content-Type": "application/json",
"App-Key": this.apiKey,
},
});
this.setupInterceptors();
}
setupInterceptors() {
// Request interceptor
this.axiosInstance.interceptors.request.use((config) => {
// Add timestamp to prevent caching
config.params = {
...config.params,
_t: Date.now(),
};
return config;
}, (error) => {
return Promise.reject(this.handleError(error));
});
// Response interceptor
this.axiosInstance.interceptors.response.use((response) => response, (error) => {
return Promise.reject(this.handleError(error));
});
}
handleError(error) {
const justsendError = {
message: error.message || "Unknown error occurred",
details: error.response?.data,
};
if (error.response?.status !== undefined) {
justsendError.status = error.response.status;
}
if (error.response?.data && typeof error.response.data === "object") {
const responseData = error.response.data;
// Handle API error responses
if (responseData.message) {
justsendError.message = responseData.message;
}
if (responseData.code) {
justsendError.code = responseData.code;
}
}
return justsendError;
}
async get(url, params) {
const response = await this.axiosInstance.get(url, {
params,
});
return response.data;
}
async post(url, data) {
const response = await this.axiosInstance.post(url, data);
return response.data;
}
async put(url, data) {
const response = await this.axiosInstance.put(url, data);
return response.data;
}
async delete(url) {
const response = await this.axiosInstance.delete(url);
return response.data;
}
async postFormData(url, formData) {
const response = await this.axiosInstance.post(url, formData, {
headers: {
"Content-Type": "multipart/form-data",
},
});
return response.data;
}
// Method to update API key
updateApiKey(apiKey) {
this.apiKey = apiKey;
this.axiosInstance.defaults.headers["App-Key"] = apiKey;
}
// Method to get current API key
getApiKey() {
return this.apiKey;
}
}
exports.HttpClient = HttpClient;
//# sourceMappingURL=http-client.js.map