@twilio-labs/serverless-api
Version:
API-wrapper for the Twilio Serverless API
86 lines (85 loc) • 2.77 kB
JavaScript
/** @module @twilio-labs/serverless-api/dist/api */
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getService = exports.findServiceSid = exports.listServices = exports.createService = void 0;
const debug_1 = __importDefault(require("debug"));
const error_1 = require("../utils/error");
const pagination_1 = require("./utils/pagination");
const log = (0, debug_1.default)('twilio-serverless-api:services');
/**
* Creates a new service given a service name
*
* @export
* @param {string} serviceName the unique name for the service
* @param {TwilioServerlessApiClient} client API client
* @param {boolean} uiEditable Whether the Service's properties and subresources can be edited via the UI. The default value is false.
* @returns {Promise<string>}
*/
async function createService(serviceName, client, uiEditable = false) {
try {
const resp = await client.request('post', 'Services', {
form: {
UniqueName: serviceName,
FriendlyName: serviceName,
IncludeCredentials: true,
UiEditable: uiEditable,
},
});
const service = resp.body;
return service.sid;
}
catch (err) {
log('%O', new error_1.ClientApiError(err));
throw err;
}
}
exports.createService = createService;
/**
* Lists all services attached to an account
*
* @export
* @param {TwilioServerlessApiClient} client API client
* @returns {Promise<ServiceResource[]>}
*/
async function listServices(client) {
return (0, pagination_1.getPaginatedResource)(client, 'Services');
}
exports.listServices = listServices;
/**
* Tries to find the service SID associated to a service name
*
* @export
* @param {string} uniqueName the unique name of the service
* @param {TwilioServerlessApiClient} client API client
* @returns {(Promise<string | undefined>)}
*/
async function findServiceSid(uniqueName, client) {
try {
const services = await listServices(client);
for (let service of services) {
if (service.unique_name === uniqueName) {
return service.sid;
}
}
}
catch (err) {
log('%O', new error_1.ClientApiError(err));
throw err;
}
return undefined;
}
exports.findServiceSid = findServiceSid;
async function getService(sid, client) {
try {
const resp = await client.request('get', `Services/${sid}`);
return resp.body;
}
catch (err) {
log('%O', new error_1.ClientApiError(err));
throw err;
}
}
exports.getService = getService;
;