From 1084caf2d31b3f1510e4b01e245744220f5d0286 Mon Sep 17 00:00:00 2001 From: TheSainEyereg Date: Wed, 6 Jul 2022 20:13:56 +0300 Subject: [PATCH] Step to informativity --- src/ApiError.ts | 9 +++++++++ src/HttpClient.ts | 14 +++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 src/ApiError.ts diff --git a/src/ApiError.ts b/src/ApiError.ts new file mode 100644 index 0000000..2acd866 --- /dev/null +++ b/src/ApiError.ts @@ -0,0 +1,9 @@ +class ApiError extends Error { + constructor(error:{name:string;message:string}) { + super(); + this.name = error.name || "unknown"; + this.message = error.message || "An unknown error has occurred"; + } +} + +export default ApiError; \ No newline at end of file diff --git a/src/HttpClient.ts b/src/HttpClient.ts index af80e67..6178374 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -5,6 +5,7 @@ import { Response, RequestInterface, } from "./types"; +import ApiError from "./ApiError"; export default class HttpClient implements HttpClientInterface { async _sendRequestAxios( @@ -31,13 +32,12 @@ export default class HttpClient implements HttpClientInterface { } else { return data; } - } catch (e) { - console.error({ - status: e.response.status, - headers: e.response.headers, - data: e.response.data, - }); - throw new Error(`Request failed: ${e.message}`); + } catch (e:any) { + if (e.response.data?.error) { + throw new ApiError(e.response.data.error) + } else { + throw new Error(`Request failed: ${e.message}`); + } } }