@jokoor/sdk
Version:
Jokoor SMS API SDK for JavaScript/TypeScript
83 lines • 2.81 kB
JavaScript
"use strict";
/**
* Contacts resource - User-friendly wrapper for SMS contacts API
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Contacts = void 0;
const base_1 = require("./base");
const api_1 = require("../generated/api");
const result_1 = require("../types/result");
class Contacts extends base_1.BaseResource {
constructor(configuration) {
super(configuration);
this.api = new api_1.SMSContactsApi(configuration);
}
/**
* Create a new contact
* @param params Contact creation parameters
* @returns Created contact
*/
async create(params) {
const apiParams = this.convertParamsToSnakeCase(params);
const result = await this.handleApiCall(() => this.api.v1SmsContactsPost(apiParams));
if ((0, result_1.isErr)(result)) {
return result;
}
return (0, result_1.ok)(this.convertKeysToCamelCase(result.data));
}
/**
* Get a contact by ID
* @param id Contact ID
* @returns Contact details
*/
async get(id) {
// Validate ID is not empty
if (!id || id.trim() === '') {
return (0, result_1.err)('Contact ID is required');
}
const result = await this.handleApiCall(() => this.api.v1SmsContactsIdGet(id));
if ((0, result_1.isErr)(result)) {
return result;
}
return (0, result_1.ok)(this.convertKeysToCamelCase(result.data));
}
/**
* Update a contact
* @param id Contact ID
* @param params Update parameters
* @returns Updated contact
*/
async update(id, params) {
const apiParams = this.convertParamsToSnakeCase(params);
const result = await this.handleApiCall(() => this.api.v1SmsContactsIdPut(id, apiParams));
if ((0, result_1.isErr)(result)) {
return result;
}
return (0, result_1.ok)(this.convertKeysToCamelCase(result.data));
}
/**
* Delete a contact
* @param id Contact ID
* @returns Deletion confirmation
*/
async delete(id) {
return await this.handleApiCall(() => this.api.v1SmsContactsIdDelete(id));
}
/**
* List contacts
* @param options List options
* @returns Paginated list of contacts
*/
async list(options) {
const result = await this.handlePaginatedApiCall(() => this.api.v1SmsContactsGet(options?.limit, options?.offset, options?.search, options?.groupId, options?.sort));
if ((0, result_1.isErr)(result)) {
return result;
}
return (0, result_1.ok)({
...result.data,
items: result.data.items.map(item => this.convertKeysToCamelCase(item))
});
}
}
exports.Contacts = Contacts;
//# sourceMappingURL=contacts.js.map