Add a command to show the user's active event

This commit is contained in:
Samuel Elliott 2022-09-07 16:29:36 +01:00
parent 0421f5e565
commit 4b5edd73df
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,65 @@
import createDebug from 'debug';
import type { Arguments as ParentArguments } from '../nso.js';
import { ArgumentsCamelCase, Argv, YargsArguments } from '../../util/yargs.js';
import { initStorage } from '../../util/storage.js';
import { getToken, Login } from '../../common/auth/coral.js';
const debug = createDebug('cli:nso:active-event');
export const command = 'active-event';
export const desc = 'Show the user\'s current Online Lounge/voice chat event';
export function builder(yargs: Argv<ParentArguments>) {
return yargs.option('user', {
describe: 'Nintendo Account ID',
type: 'string',
}).option('token', {
describe: 'Nintendo Account session token',
type: 'string',
}).option('json', {
describe: 'Output raw JSON',
type: 'boolean',
}).option('json-pretty-print', {
describe: 'Output pretty-printed JSON',
type: 'boolean',
});
}
type Arguments = YargsArguments<ReturnType<typeof builder>>;
export async function handler(argv: ArgumentsCamelCase<Arguments>) {
const storage = await initStorage(argv.dataPath);
const usernsid = argv.user ?? await storage.getItem('SelectedUser');
const token: string = argv.token ||
await storage.getItem('NintendoAccountToken.' + usernsid);
const {nso, data} = await getToken(storage, token, argv.zncProxyUrl);
if (data[Login]) {
const announcements = await nso.getAnnouncements();
}
const webservices = await nso.getWebServices();
const friends = await nso.getFriendList();
const activeevent = await nso.getActiveEvent();
if ('id' in activeevent.result) {
if (argv.jsonPrettyPrint) {
console.log(JSON.stringify(activeevent.result, null, 4));
return;
}
if (argv.json) {
console.log(JSON.stringify(activeevent.result));
return;
}
console.log('Active event', activeevent.result);
} else {
if (argv.json || argv.jsonPrettyPrint) {
console.log('null');
return;
}
console.log('No active event');
}
}

View File

@ -6,6 +6,7 @@ export * as announcements from './announcements.js';
export * as webservices from './webservices.js';
export * as webservicetoken from './webservicetoken.js';
export * as friends from './friends.js';
export * as activeEvent from './active-event.js';
export * as presence from './presence.js';
export * as notify from './notify.js';
export * as httpServer from './http-server.js';