polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
56 lines • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MaterialHandler = void 0;
const base_handler_1 = require("./base.handler");
const errors_1 = require("../utils/errors");
const api_command_1 = require("../utils/api-command");
const material_service_1 = require("../services/material-service");
class MaterialHandler extends base_handler_1.BaseHandler {
constructor(authConfig, serviceConfig) {
super();
this.service = new material_service_1.MaterialServiceSdk(authConfig, serviceConfig);
}
async listMaterials(options) {
this.requireFields(options, ['type', 'pageNumber', 'pageSize']);
this.show(await this.service.listMaterials((0, api_command_1.apiParams)(options)), options.output);
}
async deleteMaterials(options) {
this.requireFields(options, ['materialIds']);
await (0, api_command_1.confirmWrite)(options.force, `Delete ${options.materialIds.length} material(s)?`);
this.show(await this.service.deleteMaterials((0, api_command_1.apiParams)(options)), options.output);
}
async listCategories(options) {
this.requireFields(options, ['materialType']);
this.show(await this.service.listMaterialCategories((0, api_command_1.apiParams)(options)), options.output);
}
async listLabels(options) {
this.requireFields(options, ['pageNumber', 'pageSize']);
this.show(await this.service.listMaterialLabels((0, api_command_1.apiParams)(options)), options.output);
}
async createLabel(options) {
this.requireFields(options, ['name']);
await (0, api_command_1.confirmWrite)(options.force, `Create material label "${options.name}"?`);
this.show({ success: await this.service.createMaterialLabel((0, api_command_1.apiParams)(options)) }, options.output);
}
async updateLabel(options) {
this.requireFields(options, ['id', 'name']);
await (0, api_command_1.confirmWrite)(options.force, `Update material label ${options.id}?`);
this.show({ success: await this.service.updateMaterialLabel((0, api_command_1.apiParams)(options)) }, options.output);
}
async deleteLabel(options) {
this.requireFields(options, ['id']);
await (0, api_command_1.confirmWrite)(options.force, `Delete material label ${options.id}?`);
this.show({ success: await this.service.deleteMaterialLabel((0, api_command_1.apiParams)(options)) }, options.output);
}
show(data, output = 'table') {
this.displayData(data, output);
}
requireFields(options, fields) {
const missing = fields.filter((field) => options[field] === undefined || options[field] === '');
if (missing.length > 0) {
throw new errors_1.PolyVValidationError(`Missing required option(s): ${missing.join(', ')}`, 'options', options, 'validation_failed');
}
}
}
exports.MaterialHandler = MaterialHandler;
//# sourceMappingURL=material.handler.js.map