UNPKG

justsend-sdk

Version:

TypeScript SDK for Justsend SMS Marketing API

95 lines 3.19 kB
"use strict"; 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