@cloudonix.io/cloudonix-cli
Version:
A CLI tool for the Cloudonix API.Core
125 lines (103 loc) • 4.46 kB
JavaScript
/**
* ██████╗██╗ ██████╗ ██╗ ██╗██████╗ ██████╗ ███╗ ██╗██╗██╗ ██╗
* ██╔════╝██║ ██╔═══██╗██║ ██║██╔══██╗██╔═══██╗████╗ ██║██║╚██╗██╔╝
* ██║ ██║ ██║ ██║██║ ██║██║ ██║██║ ██║██╔██╗ ██║██║ ╚███╔╝
* ██║ ██║ ██║ ██║██║ ██║██║ ██║██║ ██║██║╚██╗██║██║ ██╔██╗
* ╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝╚██████╔╝██║ ╚████║██║██╔╝ ██╗
* ╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝
*
* Project: cloudonix-cli | datamodels/trunks.js
* Creator: Nir Simionovich <nirs@cloudonix.io> | 2019-08-27
*/
const CloudonixApi = require('../lib/CloudonixApi').constructor();
const CloudonixCoreDatamodel = require('./CoreModel');
const CurrentDatamodel = 'subscribers';
const passwordGenerator = require('generate-password');
class SubscribersDatamodel extends CloudonixCoreDatamodel {
static async get(flags) {
try {
this._modelQueryPath = CloudonixApi._subscribers.setTenant(CurrentDatamodel, this._modelTenant, flags.domain);
var response;
response = await CloudonixApi._subscribers.get();
return this.cleanResponse(response);
} catch (error) {
return error;
}
}
static async create(flags) {
try {
this._modelQueryPath = CloudonixApi._subscribers.setTenant(CurrentDatamodel, this._modelTenant, flags.domain);
if (typeof flags.msisdn == 'undefined') {
return {
status: 500,
message: 'Missing arguments --msisdn',
}
}
if (flags.autogenerate) {
flags['sip-password'] = passwordGenerator.generate({length: 32, numbers: true, uppercase: true, symbols: false});
delete flags.autogenerate;
} else if (typeof flags.password === 'undefined') {
flags['sip-password'] = '';
} else {
flags['sip-password'] = flags.password;
delete flags.password;
}
if (typeof flags.disable != 'undefined') {
flags.active = false;
} else if (typeof flags.enable != 'undefined') {
flags.active = true;
}
var response = await CloudonixApi._subscribers.create(flags);
delete response.sipPassword;
return this.cleanResponse(response);
} catch (error) {
return error;
}
}
static async update(flags) {
try {
this._modelQueryPath = CloudonixApi._subscribers.setTenant(CurrentDatamodel, this._modelTenant, flags.domain);
if (typeof flags.msisdn == 'undefined') {
return {
status: 500,
message: 'Missing arguments --msisdn',
}
}
if (typeof flags.reset !== 'undefined') {
flags['sip-password'] = passwordGenerator.generate({length: 32, numbers: true, uppercase: true, symbols: false});
delete flags.reset;
}
if (typeof flags.disable != 'undefined') {
flags.active = false;
delete flags.disable;
} else if (typeof flags.enable != 'undefined') {
flags.active = true;
delete flags.enable;
}
var response = await CloudonixApi._subscribers.update(flags);
delete response.sipPassword;
return this.cleanResponse(response);
} catch (error) {
return error;
}
}
static async revoke(flags) {
try {
this._modelQueryPath = CloudonixApi._subscribers.setTenant(CurrentDatamodel, this._modelTenant, flags.domain);
var response;
if (typeof flags.msisdn != 'undefined') {
response = await CloudonixApi._subscribers.revoke(flags.msisdn);
} else {
return {
status: 500,
message: 'Missing arguments --msisdn',
}
}
return this.cleanResponse(response);
}
catch (error) {
return error;
}
}
}
module.exports = SubscribersDatamodel;