polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
80 lines • 3.94 kB
JavaScript
;
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