UNPKG

@davidbolaji/termii-node

Version:

Node.js SDK for Termii API – send SMS, voice, OTP, and manage messaging with ease.

101 lines (100 loc) 3.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContactService = void 0; const form_data_1 = __importDefault(require("form-data")); /** * Service for managing phonebook contacts. */ class ContactService { constructor(http) { this.http = http; } /** * Fetch all contacts belonging to a specific phonebook. * * @param phonebookId - The ID of the phonebook to fetch contacts from * @returns Paginated list of contacts with metadata * * @example * ```ts * const response = await contactService.fetchContacts("12345"); * console.log(response.data[0].phone_number); // "+2348012345678" * ``` */ async fetchContacts(phonebookId) { return this.http.request(`/phonebooks/${phonebookId}/contacts`, { method: "GET", authLocation: "query" }); } /** * Add a new contact to a phonebook. * * @param phonebookId - The ID of the phonebook to add the contact into * @param contact - Contact details (phone number, name, email, etc.) * @returns The newly added contact record * * @example * ```ts * const response = await contactService.addContact("12345", { * phone_number: "+2348012345678", * first_name: "Jane", * last_name: "Doe", * email_address: "jane@example.com" * }); * console.log(response.data.first_name); // "Jane" * ``` */ async addContact(phonebookId, contact) { return this.http.request(`/phonebooks/${phonebookId}/contacts`, { method: "POST", data: contact, authLocation: "body" }); } /** * Upload multiple contacts to a phonebook via CSV file. * * @param request - Contains CSV file and metadata (phonebook ID, country code) * @returns Confirmation message * * @example * ```ts * const csvBuffer = fs.readFileSync("contacts.csv"); * const response = await contactService.uploadContacts({ * file: csvBuffer, * pid: "12345", * country_code: "NG" * }); * console.log(response.message); // "Contacts uploaded successfully" * ``` */ async uploadContacts(request) { const form = new form_data_1.default(); form.append("file", request.file, "contacts.csv"); form.append("contact", JSON.stringify({ pid: request.pid, country_code: request.country_code, })); return this.http.request(`/contacts/upload`, { method: "POST", data: form, authLocation: "body" }); } /** * Delete a single contact from the system. * * @param contactId - The ID of the contact to delete * @returns Confirmation response * * @example * ```ts * const response = await contactService.deleteContact("67890"); * console.log(response.message); // "Contact deleted successfully" * ``` */ async deleteContact(contactId) { return this.http.request(`/contacts/${contactId}`, { method: "DELETE", authLocation: "query" }); } } exports.ContactService = ContactService;