@@ -4,6 +4,8 @@ import { HttpMethod } from '../types/Api';
44import { HTTP_METHOD_PREPOSITIONS , HTTP_METHOD_VERBS } from '../constants/api' ;
55import { i18n } from '../utils/lang' ;
66
7+ export const HubSpotHttpErrorName = 'HubSpotHttpError' ;
8+
79// eslint-disable-next-line @typescript-eslint/no-explicit-any
810export class HubSpotHttpError < T = any > extends Error {
911 public status ?: number ;
@@ -27,7 +29,7 @@ export class HubSpotHttpError<T = any> extends Error {
2729 context ?: HubSpotHttpErrorContext
2830 ) {
2931 super ( message , options ) ;
30- this . name = 'HubSpotHttpError' ;
32+ this . name = HubSpotHttpErrorName ;
3133 this . context = context ;
3234 this . cause = options ?. cause ;
3335
@@ -77,11 +79,18 @@ export class HubSpotHttpError<T = any> extends Error {
7779 }
7880 }
7981
80- public updateContext ( context : Partial < HubSpotHttpErrorContext > ) {
82+ public updateContext (
83+ context : Partial < HubSpotHttpErrorContext > ,
84+ additionalDebugContext ?: string
85+ ) {
8186 this . context = { ...this . context , ...context } ;
8287 // Update the error messages when the context is updated
8388 if ( isAxiosError ( this . cause ) ) {
84- this . message = this . joinErrorMessages ( this . cause , this . context ) ;
89+ this . message = this . joinErrorMessages (
90+ this . cause ,
91+ this . context ,
92+ additionalDebugContext
93+ ) ;
8594 }
8695 }
8796
@@ -176,9 +185,9 @@ export class HubSpotHttpError<T = any> extends Error {
176185
177186 private joinErrorMessages (
178187 error : AxiosError < { message : string ; errors : { message : string } [ ] } > ,
179- context : HubSpotHttpErrorContext = { }
188+ context : HubSpotHttpErrorContext = { } ,
189+ additionalDebugContext ?: string
180190 ) : string {
181- const i18nKey = 'errors.apiErrors' ;
182191 const status = error . response ?. status ;
183192 const method = error . config ?. method as HttpMethod ;
184193
@@ -196,57 +205,75 @@ export class HubSpotHttpError<T = any> extends Error {
196205 ? `${ action } ${ preposition } '${ context . request } '`
197206 : action ;
198207
199- messageDetail = i18n ( `${ i18nKey } .messageDetail` , {
208+ messageDetail = i18n ( `errors.apiErrors .messageDetail` , {
200209 accountId : context . accountId ,
201210 requestName,
202211 } ) ;
203212 } else {
204- messageDetail = i18n ( `${ i18nKey } .genericMessageDetail` ) ;
213+ messageDetail = i18n ( `errors.apiErrors .genericMessageDetail` ) ;
205214 }
206215
207216 const errorMessage : Array < string > = [ ] ;
208217
209218 if ( ( method === 'put' || method === 'post' ) && context . payload ) {
210219 errorMessage . push (
211- i18n ( `${ i18nKey } .unableToUpload` , { payload : context . payload } )
220+ i18n ( `errors.apiErrors .unableToUpload` , { payload : context . payload } )
212221 ) ;
213222 }
214223
224+ let statusBasedMessage : string | undefined ;
225+
215226 switch ( status ) {
216227 case 400 :
217- errorMessage . push ( i18n ( `${ i18nKey } .codes.400` , { messageDetail } ) ) ;
228+ statusBasedMessage = i18n ( `errors.apiErrors.codes.400` , {
229+ messageDetail,
230+ } ) ;
218231 break ;
219232 case 401 :
220- errorMessage . push ( i18n ( `${ i18nKey } .codes.401` , { messageDetail } ) ) ;
233+ statusBasedMessage = i18n ( `errors.apiErrors.codes.401` , {
234+ messageDetail,
235+ } ) ;
221236 break ;
222237 case 403 :
223238 break ;
224239 case 404 :
225- errorMessage . push ( i18n ( `${ i18nKey } .codes.404` , { messageDetail } ) ) ;
240+ statusBasedMessage = i18n ( `errors.apiErrors.codes.404` , {
241+ messageDetail,
242+ } ) ;
226243 break ;
227244 case 429 :
228- errorMessage . push ( i18n ( `${ i18nKey } .codes.429` , { messageDetail } ) ) ;
245+ statusBasedMessage = i18n ( `errors.apiErrors.codes.429` , {
246+ messageDetail,
247+ } ) ;
229248 break ;
230249 case 503 :
231- errorMessage . push ( i18n ( `${ i18nKey } .codes.503` , { messageDetail } ) ) ;
250+ statusBasedMessage = i18n ( `errors.apiErrors.codes.503` , {
251+ messageDetail,
252+ } ) ;
232253 break ;
233254 default :
234255 if ( status && status >= 500 && status < 600 ) {
235- errorMessage . push (
236- i18n ( ` ${ i18nKey } .codes.500Generic` , { messageDetail } )
237- ) ;
256+ statusBasedMessage = i18n ( `errors.apiErrors.codes.500Generic` , {
257+ messageDetail,
258+ } ) ;
238259 } else if ( status && status >= 400 && status < 500 ) {
239- errorMessage . push (
240- i18n ( ` ${ i18nKey } .codes.400Generic` , { messageDetail } )
241- ) ;
260+ statusBasedMessage = i18n ( `errors.apiErrors.codes.400Generic` , {
261+ messageDetail,
262+ } ) ;
242263 } else {
243- errorMessage . push (
244- i18n ( ` ${ i18nKey } .codes.generic` , { messageDetail } )
245- ) ;
264+ statusBasedMessage = i18n ( `errors.apiErrors.codes.generic` , {
265+ messageDetail,
266+ } ) ;
246267 }
247268 break ;
248269 }
249270
271+ if ( statusBasedMessage ) {
272+ errorMessage . push (
273+ `${ statusBasedMessage } ${ additionalDebugContext ? ` ${ additionalDebugContext } ` : '' } `
274+ ) ;
275+ }
276+
250277 if ( error ?. response ?. data ) {
251278 const { message, errors } = error . response . data ;
252279
0 commit comments