UNPKG

@elusion-sdk/briq

Version:

A modern TypeScript SDK for Briq SMS API integration

66 lines 2.35 kB
import { HttpClient } from "./HttpClient"; import { WorkspaceService } from "../services/WorkspaceService"; import { MessageService } from "../services/MessageService"; import { CampaignService } from "../services/CampaignService"; import { validateApiKey } from "../utils/validators"; import { ConfigurationError } from "../utils/errors"; import { API_CONFIG } from "../utils/constants"; export class Briq { httpClient; workspaces; messages; campaigns; constructor(config) { this.validateConfig(config); this.httpClient = new HttpClient({ baseUrl: API_CONFIG.BASE_URL, timeout: API_CONFIG.DEFAULT_TIMEOUT, retries: API_CONFIG.DEFAULT_RETRIES, version: API_CONFIG.VERSION, ...config, }); this.workspaces = new WorkspaceService(this.httpClient); this.messages = new MessageService(this.httpClient); this.campaigns = new CampaignService(this.httpClient); } validateConfig(config) { if (!config) { throw new ConfigurationError("Configuration object is required"); } try { validateApiKey(config.apiKey); } catch (error) { throw new ConfigurationError(`Invalid API key: ${error.message}`); } if (config.baseUrl && typeof config.baseUrl !== "string") { throw new ConfigurationError("Base URL must be a string"); } if (config.timeout && (!Number.isInteger(config.timeout) || config.timeout <= 0)) { throw new ConfigurationError("Timeout must be a positive integer"); } if (config.retries && (!Number.isInteger(config.retries) || config.retries < 0)) { throw new ConfigurationError("Retries must be a non-negative integer"); } } async testConnection() { try { await this.workspaces.list(); return true; } catch { return false; } } getConfig() { return { baseUrl: this.httpClient["config"].baseUrl, timeout: this.httpClient["config"].timeout, retries: this.httpClient["config"].retries, version: this.httpClient["config"].version, }; } } //# sourceMappingURL=BriqClient.js.map