mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-03-21 18:04:10 -05:00
Format response data in error messages
This commit is contained in:
parent
a32c3dec72
commit
fe725f931a
|
|
@ -29,7 +29,7 @@ export async function getNintendoAccountSessionToken(code: string, verifier: str
|
|||
const token = await response.json() as NintendoAccountSessionToken | NintendoAccountError;
|
||||
|
||||
if ('errorCode' in token) {
|
||||
throw new ErrorResponse('[na] + ' + token.detail, response, token);
|
||||
throw new ErrorResponse('[na] ' + token.detail, response, token);
|
||||
}
|
||||
|
||||
debug('Got Nintendo Account session token', token);
|
||||
|
|
@ -59,7 +59,7 @@ export async function getNintendoAccountToken(token: string, client_id: string)
|
|||
const nintendoAccountToken = await response.json() as NintendoAccountToken | NintendoAccountError;
|
||||
|
||||
if ('errorCode' in nintendoAccountToken) {
|
||||
throw new ErrorResponse('[na] + ' + nintendoAccountToken.detail, response, nintendoAccountToken);
|
||||
throw new ErrorResponse('[na] ' + nintendoAccountToken.detail, response, nintendoAccountToken);
|
||||
}
|
||||
|
||||
debug('Got Nintendo Account token', nintendoAccountToken);
|
||||
|
|
@ -85,7 +85,7 @@ export async function getNintendoAccountUser(token: NintendoAccountToken) {
|
|||
const user = await response.json() as NintendoAccountUser | NintendoAccountError;
|
||||
|
||||
if ('errorCode' in user) {
|
||||
throw new ErrorResponse('[na] + ' + user.detail, response, user);
|
||||
throw new ErrorResponse('[na] ' + user.detail, response, user);
|
||||
}
|
||||
|
||||
debug('Got Nintendo Account user info', user);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import * as util from 'node:util';
|
||||
import { Response as NodeFetchResponse } from 'node-fetch';
|
||||
|
||||
export class ErrorResponse<T = unknown> extends Error {
|
||||
|
|
@ -19,6 +20,19 @@ export class ErrorResponse<T = unknown> extends Error {
|
|||
} else if (typeof body !== 'undefined') {
|
||||
this.data = body;
|
||||
}
|
||||
|
||||
const stack = this.stack ?? (this.name + ': ' + message);
|
||||
const lines = stack.split('\n');
|
||||
const head = lines.shift()!;
|
||||
|
||||
Object.defineProperty(this, 'stack', {
|
||||
value: head + '\n' +
|
||||
' from ' + response.url + ' (' + response.status + ' ' + response.statusText + ')\n' +
|
||||
' ' + util.inspect(this.data ? this.data : this.body, {
|
||||
compact: true,
|
||||
}).replace(/\n/g, '\n ') +
|
||||
(lines.length ? '\n' + lines.join('\n') : ''),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -245,8 +245,10 @@ export class Store extends EventEmitter {
|
|||
|
||||
await this.app.menu?.updateMenu();
|
||||
} catch (err) {
|
||||
debug('Error restoring monitor for user %s', user.id, err);
|
||||
|
||||
const {response} = await dialog.showMessageBox({
|
||||
message: 'Error restoring monitor for user ' + user.id,
|
||||
message: (err instanceof Error ? err.name : 'Error') + ' restoring monitor for user ' + user.id,
|
||||
detail: err instanceof Error ? err.stack ?? err.message : err as any,
|
||||
type: 'error',
|
||||
buttons: ['OK', 'Retry'],
|
||||
|
|
@ -272,8 +274,10 @@ export class Store extends EventEmitter {
|
|||
|
||||
await this.app.menu?.updateMenu();
|
||||
} catch (err) {
|
||||
debug('Error restoring monitor for presence URL %s', state.discord_presence.source.url, err);
|
||||
|
||||
const {response} = await dialog.showMessageBox({
|
||||
message: 'Error restoring monitor for presence URL ' + state.discord_presence.source.url,
|
||||
message: (err instanceof Error ? err.name : 'Error') + ' restoring monitor for presence URL ' + state.discord_presence.source.url,
|
||||
detail: err instanceof Error ? err.stack ?? err.message : err as any,
|
||||
type: 'error',
|
||||
buttons: ['OK', 'Retry'],
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ export function setupIpc(appinstance: App, ipcMain: IpcMain) {
|
|||
store.users.get(token).then(u => openWebService(store, token, u.nso, u.data, webservice, qs)
|
||||
.catch(err => dialog.showMessageBox(BrowserWindow.fromWebContents(e.sender)!, {
|
||||
type: 'error',
|
||||
title: 'Error opening web service',
|
||||
title: (err instanceof Error ? err.name : 'Error') + ' opening web service',
|
||||
message: err.message,
|
||||
detail: (err instanceof Error ? err.stack ?? '' : err) + '\n\n' + util.inspect({
|
||||
webservice: {
|
||||
|
|
|
|||
|
|
@ -262,18 +262,9 @@ export class PresenceMonitorManager {
|
|||
monitor: EmbeddedPresenceMonitor | EmbeddedProxyPresenceMonitor,
|
||||
err: ErrorResponse<CoralErrorResponse> | NodeJS.ErrnoException
|
||||
): Promise<LoopResult> {
|
||||
const {response} = await dialog.showMessageBox(err instanceof ErrorResponse ? {
|
||||
message: 'Request error updating presence monitor',
|
||||
detail: err.response.status + ' ' + err.response.statusText + ' ' +
|
||||
err.response.url + '\n' +
|
||||
err.body + '\n\n' +
|
||||
(err.stack ?? err.message),
|
||||
type: 'error',
|
||||
buttons: ['OK', 'Retry'],
|
||||
defaultId: 0,
|
||||
} : {
|
||||
message: 'Error updating presence monitor',
|
||||
detail: err instanceof Error ? err.stack ?? err.message : err as any,
|
||||
const {response} = await dialog.showMessageBox({
|
||||
message: err.name + ' updating presence monitor',
|
||||
detail: err.stack ?? err.message,
|
||||
type: 'error',
|
||||
buttons: ['OK', 'Retry'],
|
||||
defaultId: 0,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user