Only request data necessary to appear as if opening Nintendo's app

This commit is contained in:
Samuel Elliott
2022-08-16 17:00:38 +01:00
parent 77f07eb1b3
commit 65d1069edf
10 changed files with 71 additions and 19 deletions

View File

@@ -10,9 +10,13 @@ import { checkUseLimit, SHOULD_LIMIT_USE } from './util.js';
const debug = createDebug('nxapi:auth:coral');
export const Login = Symbol('Login');
export interface SavedToken extends CoralAuthData {
expires_at: number;
proxy_url?: string;
/** Indicates we just logged in and didn't use a cached token */
[Login]?: boolean;
}
export async function getToken(
@@ -74,6 +78,8 @@ export async function getToken(
await storage.setItem('NsoToken.' + token, existingToken);
await storage.setItem('NintendoAccountToken.' + data.user.id, token);
existingToken[Login] = true;
return {nso, data: existingToken};
}

View File

@@ -1,6 +1,6 @@
import createDebug from 'debug';
import persist from 'node-persist';
import { getToken } from './coral.js';
import { getToken, Login } from './coral.js';
import NooklinkApi, { NooklinkUserApi } from '../../api/nooklink.js';
import { AuthToken, Users } from '../../api/nooklink-types.js';
import { WebServiceToken } from '../../api/coral-types.js';
@@ -47,6 +47,13 @@ export async function getWebServiceToken(
const {nso, data} = await getToken(storage, token, proxy_url);
if (data[Login]) {
const announcements = await nso.getAnnouncements();
const friends = await nso.getFriendList();
const webservices = await nso.getWebServices();
const activeevent = await nso.getActiveEvent();
}
const existingToken: SavedToken = await NooklinkApi.loginWithCoral(nso, data.user);
await storage.setItem('NookToken.' + token, existingToken);

View File

@@ -2,7 +2,7 @@ import process from 'node:process';
import * as fs from 'node:fs';
import createDebug from 'debug';
import persist from 'node-persist';
import { getToken } from './coral.js';
import { getToken, Login } from './coral.js';
import SplatNet2Api, { SplatNet2AuthData, updateIksmSessionLastUsed } from '../../api/splatnet2.js';
import { checkUseLimit, SHOULD_LIMIT_USE } from './util.js';
import { Jwt } from '../../util/jwt.js';
@@ -44,6 +44,13 @@ export async function getIksmToken(
const {nso, data} = await getToken(storage, token, proxy_url);
if (data[Login]) {
const announcements = await nso.getAnnouncements();
const friends = await nso.getFriendList();
const webservices = await nso.getWebServices();
const activeevent = await nso.getActiveEvent();
}
const existingToken: SavedIksmSessionToken = await SplatNet2Api.loginWithCoral(nso, data.user);
await storage.setItem('IksmToken.' + token, existingToken);