From 2e843e3f3628eaa406c99ffa75f79560028e4df1 Mon Sep 17 00:00:00 2001 From: Saad Jutt Date: Wed, 2 Mar 2022 20:25:56 +0500 Subject: [PATCH] fix: raising error with details we get from server --- src/request/RequestClient.ts | 14 ++++++++++++-- src/types/errors/LoginRequiredError.ts | 8 ++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) 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) }