diff --git a/src/request/RequestClient.ts b/src/request/RequestClient.ts index 5a82291..3645c08 100644 --- a/src/request/RequestClient.ts +++ b/src/request/RequestClient.ts @@ -557,8 +557,18 @@ export class RequestClient implements HttpClient { } export const throwIfError = (response: AxiosResponse) => { - if (response.status === 401) { - throw new LoginRequiredError() + switch (response.status) { + case 400: + if (typeof response.data === 'object') { + throw new LoginRequiredError(response.data) + } + break + case 401: + if (typeof response.data === 'object') { + throw new LoginRequiredError(response.data) + } else { + throw new LoginRequiredError() + } } if (response.data?.entityID?.includes('login')) { diff --git a/src/types/errors/LoginRequiredError.ts b/src/types/errors/LoginRequiredError.ts index 854c032..4f0ed20 100644 --- a/src/types/errors/LoginRequiredError.ts +++ b/src/types/errors/LoginRequiredError.ts @@ -1,6 +1,10 @@ export class LoginRequiredError extends Error { - constructor() { - super('Auth error: You must be logged in to access this resource') + constructor(details?: any) { + const message = details + ? JSON.stringify(details, null, 2) + : 'You must be logged in to access this resource' + + super(`Auth error: ${message}`) this.name = 'LoginRequiredError' Object.setPrototypeOf(this, LoginRequiredError.prototype) }