UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

56 lines 2.98 kB
"use strict"; 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