polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
89 lines • 6.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerFinanceCommands = registerFinanceCommands;
const finance_handler_1 = require("../handlers/finance.handler");
const errors_1 = require("../utils/errors");
const api_command_1 = require("../utils/api-command");
function withFinanceHandler(program, run) {
return (async () => {
try {
const { authConfig, serviceConfig } = await (0, api_command_1.loadApiCommandConfig)((0, api_command_1.commandParentOptions)(program));
await run(new finance_handler_1.FinanceHandler(authConfig, serviceConfig));
}
catch (error) {
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
process.exit(1);
}
})();
}
function addModerationListOptions(command) {
return command
.requiredOption('-c, --channel-id <id>', 'channel ID')
.option('--page <page>', 'page number', api_command_1.parsePositiveInteger)
.option('--page-number <page>', 'page number', api_command_1.parsePositiveInteger)
.option('--page-size <size>', 'page size', api_command_1.parsePositiveInteger)
.option('--session-id <id>', 'session ID')
.option('--start-time <timestamp>', 'start timestamp', api_command_1.parseTimestamp)
.option('--end-time <timestamp>', 'end timestamp', api_command_1.parseTimestamp)
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table');
}
function registerFinanceCommands(program) {
const financeCmd = program.command('finance').description('Manage finance, billing, and moderation APIs');
const audioCmd = financeCmd.command('audio-moderation').description('Audio moderation APIs');
audioCmd.command('get')
.description('Get audio moderation settings')
.requiredOption('-c, --channel-id <id>', 'channel ID')
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table')
.action((options) => withFinanceHandler(program, handler => handler.getAudioSettings(options)));
addModerationListOptions(audioCmd.command('list').description('List audio moderation records'))
.option('--moderation-strategy <strategy>', 'moderation strategy filter')
.option('--result-type <type>', 'result type', api_command_1.parsePositiveInteger)
.action((options) => withFinanceHandler(program, handler => handler.listAudioRecords(options)));
audioCmd.command('update')
.description('Update audio moderation settings')
.requiredOption('-c, --channel-id <id>', 'channel ID')
.option('--moderation-enabled <value>', 'moderation enabled (Y|N)', api_command_1.validateYn)
.option('--moderation-strategy <strategy>', 'strategy (easy|normal|strict)')
.option('--badword-enabled <value>', 'badword enabled (Y|N)', api_command_1.validateYn)
.option('--illegal-notify <json>', 'illegal notification JSON object', api_command_1.parseJsonObject)
.option('-f, --force', 'skip confirmation prompt')
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table')
.action((options) => withFinanceHandler(program, handler => handler.updateAudioSettings({
...options,
illegalNotify: options.illegalNotify,
})));
const videoCmd = financeCmd.command('video-moderation').description('Video moderation APIs');
videoCmd.command('get')
.description('Get video moderation settings')
.requiredOption('-c, --channel-id <id>', 'channel ID')
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table')
.action((options) => withFinanceHandler(program, handler => handler.getVideoSettings(options)));
addModerationListOptions(videoCmd.command('result-list').description('List video moderation results'))
.option('--label <label>', 'label filter')
.option('--result-type <type>', 'result type filter, comma-separated')
.action((options) => withFinanceHandler(program, handler => handler.listVideoResults(options)));
videoCmd.command('update')
.description('Update video moderation settings')
.requiredOption('-c, --channel-id <id>', 'channel ID')
.requiredOption('--moderation-enabled <value>', 'moderation enabled (Y|N)', api_command_1.validateYn)
.requiredOption('--moderation-strategy <strategy>', 'strategy (finance_easy|finance_normal|finance_serious)')
.requiredOption('--image-frequency <seconds>', 'image frequency (5|20|60)', api_command_1.parsePositiveInteger)
.requiredOption('--illegal-notify <json>', 'illegal notification JSON object', api_command_1.parseJsonObject)
.option('-f, --force', 'skip confirmation prompt')
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table')
.action((options) => withFinanceHandler(program, handler => handler.updateVideoSettings({
...options,
illegalNotify: options.illegalNotify,
})));
financeCmd.command('bill-detail-list')
.description('List finance bill details')
.requiredOption('--item-category <category>', 'item category')
.requiredOption('--start-date <date>', 'start date, yyyy-MM-dd')
.requiredOption('--end-date <date>', 'end date, yyyy-MM-dd')
.option('--page <page>', 'page number', api_command_1.parsePositiveInteger)
.option('--page-number <page>', 'page number', api_command_1.parsePositiveInteger)
.option('--page-size <size>', 'page size', api_command_1.parsePositiveInteger)
.option('-o, --output <format>', 'output format (table|json)', api_command_1.validateOutputFormat, 'table')
.action((options) => withFinanceHandler(program, handler => handler.listBillDetails(options)));
}
//# sourceMappingURL=finance.commands.js.map