1
- import { IEntityCreator , IResponseParser , ParsedResponse } from '../types' ;
1
+ import {
2
+ IEntityCreator , IErrorHandler , IResponseParser , ParsedResponse
3
+ } from '../types' ;
2
4
import {
3
5
IApi , Attributes , Params , HTTPMethod , InitParameters ,
4
6
RequestWithBodyConfig , RequestParameters ,
5
7
MakeRequestParameters , EntityID , EntityResponse , SingleEntityResponse , MultiEntityResponse
6
8
} from './ApiEntityService.types' ;
9
+ import NullErrorHandler from '../errorHandlers/NullErrorHandler' ;
7
10
import {
8
11
addParamsToURL , headersForRequest , serializeRequestDataForContentType ,
9
12
requestHasBody
@@ -15,15 +18,17 @@ export default class ApiEntityService<T> {
15
18
readonly parser : IResponseParser ;
16
19
readonly creator : IEntityCreator ;
17
20
readonly paths : { [ key : string ] : string } ;
21
+ readonly errorHandler : IErrorHandler ;
18
22
19
23
constructor ( {
20
- api, basePath, parser, creator, paths = { }
24
+ api, basePath, parser, creator, paths = { } , errorHandler = new NullErrorHandler ( )
21
25
} : InitParameters ) {
22
26
this . api = api ;
23
27
this . basePath = basePath ;
24
28
this . parser = parser ;
25
29
this . creator = creator ;
26
30
this . paths = paths ;
31
+ this . errorHandler = errorHandler ;
27
32
}
28
33
29
34
create (
@@ -89,15 +94,20 @@ export default class ApiEntityService<T> {
89
94
params,
90
95
config
91
96
} : RequestParameters ) : Promise < EntityResponse < T > | null > {
92
- const response = await this
93
- . makeRequest ( {
94
- method, url, attributes, params, includesFiles : config . includesFiles || false
95
- } ) ;
96
-
97
- const { data } = response ;
98
- const parsedResponse = this . parseResponse ( data ) ;
99
-
100
- return this . createEntities ( parsedResponse ) ;
97
+ try {
98
+ const response = await this
99
+ . makeRequest ( {
100
+ method, url, attributes, params, includesFiles : config . includesFiles || false
101
+ } ) ;
102
+
103
+ const { data } = response ;
104
+ const parsedResponse = this . parseResponse ( data ) ;
105
+
106
+ return this . createEntities ( parsedResponse ) ;
107
+ } catch ( error ) {
108
+ this . errorHandler . handleError ( error ) ;
109
+ return null ;
110
+ }
101
111
}
102
112
103
113
private makeRequest = ( {
0 commit comments