UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

80 lines 3.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InviteSalesHandler = void 0; const base_handler_1 = require("./base.handler"); const errors_1 = require("../utils/errors"); const api_command_1 = require("../utils/api-command"); const invite_sales_service_1 = require("../services/invite-sales-service"); class InviteSalesHandler extends base_handler_1.BaseHandler { constructor(authConfig, serviceConfig) { super(); this.service = new invite_sales_service_1.InviteSalesServiceSdk(authConfig, serviceConfig); } async list(options) { this.show(await this.service.listInviteSales(this.toPagingParams(options)), options.output); } async add(options) { const viewerUnionIds = this.parseViewerIds(options.viewerUnionIds, 200); await (0, api_command_1.confirmWrite)(options.force, `Add ${viewerUnionIds.length} invite sale(s)?`); this.show({ success: true, result: await this.service.addInviteSale(this.compact({ viewerUnionIds, organizationId: options.organizationId })) }, options.output); } async update(options) { this.requireFields(options, ['organizationId']); const viewerUnionIds = this.parseViewerIds(options.viewerUnionIds, 200); await (0, api_command_1.confirmWrite)(options.force, `Update ${viewerUnionIds.length} invite sale(s)?`); this.show({ success: true, result: await this.service.updateInviteSale({ viewerUnionIds, organizationId: options.organizationId }) }, options.output); } async remove(options) { const viewerUnionIds = this.parseViewerIds(options.viewerUnionIds, 100); await (0, api_command_1.confirmWrite)(options.force, `Remove ${viewerUnionIds.length} invite sale(s)?`); this.show({ success: true, result: await this.service.removeInviteSale(this.compact({ viewerUnionIds, newViewerUnionId: options.newViewerUnionId, followViewersToNewViewerUnionId: options.newViewerUnionId, })), }, options.output); } async listFollowViewers(options) { this.show(await this.service.listFollowViewers(this.toPagingParams(options)), options.output); } toPagingParams(options) { const { page, size, pageNumber, pageSize, output, force, ...rest } = options; return (0, api_command_1.apiParams)({ ...rest, pageNumber: page ?? pageNumber, pageSize: size ?? pageSize, }); } parseViewerIds(value, max) { if (!value || value.trim() === '') { throw new errors_1.PolyVValidationError('viewerUnionIds is required', 'viewerUnionIds', value, 'required'); } const ids = Array.from(new Set(value.split(',').map(id => id.trim()).filter(Boolean))); if (ids.length === 0) { throw new errors_1.PolyVValidationError('viewerUnionIds must not be empty', 'viewerUnionIds', value, 'not_empty'); } if (ids.length > max) { throw new errors_1.PolyVValidationError(`viewerUnionIds cannot exceed ${max} items`, 'viewerUnionIds', value, 'max_items'); } return ids; } compact(params) { return Object.fromEntries(Object.entries(params).filter(([, value]) => value !== undefined && value !== '')); } requireFields(options, fields) { const missing = fields.filter((field) => { const value = options[field]; return value === undefined || value === null || value === ''; }); if (missing.length > 0) { throw new errors_1.PolyVValidationError(`Missing required option(s): ${missing.join(', ')}`, 'options', options, 'required'); } } show(data, output = 'table') { this.displayData(data, output); } } exports.InviteSalesHandler = InviteSalesHandler; //# sourceMappingURL=invite-sales.handler.js.map