polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
118 lines • 5.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UseHandler = void 0;
const session_state_1 = require("../config/session-state");
const account_config_1 = require("../config/account-config");
class UseHandler {
constructor(sessionManager) {
const accountManager = new account_config_1.AccountConfigManager();
this.sessionManager = sessionManager || new session_state_1.SessionStateManager(accountManager);
}
async handleUse(accountName) {
try {
const result = this.sessionManager.setSessionAccount(accountName);
if (result.success) {
return result.message;
}
else {
throw new Error(result.message);
}
}
catch (error) {
throw new Error(`切换账号失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
async handleUseClear() {
try {
const result = this.sessionManager.clearSessionAccount();
if (result.success) {
return result.message;
}
else {
throw new Error(result.message);
}
}
catch (error) {
throw new Error(`清除会话账号失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
formatDateTime(date) {
const year = date.getUTCFullYear();
const month = date.getUTCMonth() + 1;
const day = date.getUTCDate();
const hours = date.getUTCHours();
const minutes = date.getUTCMinutes();
const seconds = date.getUTCSeconds();
return `${year}/${month}/${day} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
async handleUseStatus() {
try {
const currentAccount = this.sessionManager.getCurrentSessionAccount();
const sessionState = this.sessionManager.getSessionState();
if (!currentAccount) {
return this.sessionManager.getAuthStatusMessage();
}
let statusMessage = `当前会话账号: ${currentAccount}`;
if (sessionState) {
const setTime = this.formatDateTime(sessionState.setAt);
statusMessage += `\n设置时间: ${setTime}`;
if (sessionState.expiresAt) {
const expireTime = this.formatDateTime(sessionState.expiresAt);
statusMessage += `\n过期时间: ${expireTime}`;
}
statusMessage += `\n终端ID: ${sessionState.terminalId}`;
statusMessage += `\n进程ID: ${sessionState.processId}`;
}
return statusMessage;
}
catch (error) {
throw new Error(`获取会话状态失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
async handleUseList() {
try {
const accountManager = new account_config_1.AccountConfigManager();
const accounts = accountManager.listAccounts();
const currentAccount = this.sessionManager.getCurrentSessionAccount();
if (accounts.length === 0) {
return '没有可用的账号配置。使用 \'polyv-cli account add <account-name>\' 添加账号。';
}
let message = '可用账号:\n';
for (const account of accounts) {
const isCurrent = account.name === currentAccount;
const marker = isCurrent ? ' (当前会话)' : '';
const createdAt = new Date(account.createdAt).toLocaleDateString('zh-CN');
message += ` ${account.name}${marker}\n`;
message += ` App ID: ${account.appId}\n`;
if (account.userId) {
message += ` User ID: ${account.userId}\n`;
}
message += ` 创建时间: ${createdAt}\n`;
}
if (!currentAccount) {
message += '\n使用 \'polyv-cli use <account-name>\' 切换到指定账号。';
}
return message.trim();
}
catch (error) {
throw new Error(`获取账号列表失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
async handleCleanup() {
try {
const cleanedCount = this.sessionManager.cleanupExpiredSessions();
if (cleanedCount === 0) {
return '没有需要清理的过期会话文件。';
}
return `已清理 ${cleanedCount} 个过期会话文件。`;
}
catch (error) {
throw new Error(`清理会话文件失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
getSessionManager() {
return this.sessionManager;
}
}
exports.UseHandler = UseHandler;
//# sourceMappingURL=use.handler.js.map