@@ -43,6 +43,46 @@ function createAuthAxios(baseURL: string): AxiosInstance {
43
43
return instanceAxios
44
44
}
45
45
46
+ function createDefaultAxios ( baseURL : string ) : AxiosInstance {
47
+ const instanceAxios = axios . create ( {
48
+ baseURL,
49
+ } )
50
+
51
+ instanceAxios . interceptors . response . use (
52
+ function onSuccess ( response ) {
53
+ return response
54
+ } ,
55
+ function onError ( error : AxiosError ) {
56
+ const statusCode = get ( error , 'response.status' , null )
57
+ const message = get ( error , 'response.data.message' , null )
58
+
59
+ if ( statusCode === 401 ) {
60
+ console . log ( 'Unauhtorized' )
61
+ throw new ResponseError . Unauthorized ( message )
62
+ }
63
+
64
+ if ( statusCode === 400 ) {
65
+ console . log ( 'Bad Request' )
66
+ throw new ResponseError . BadRequest ( message )
67
+ }
68
+
69
+ if ( statusCode === 404 ) {
70
+ console . log ( 'Not Found' )
71
+ throw new ResponseError . NotFound ( message )
72
+ }
73
+
74
+ const handleError = error ?. response ?. headers ?. handleError
75
+ if ( ! handleError || ! handleError ( error ) ) {
76
+ console . log ( error . message )
77
+ throw new ResponseError . BadRequest ( error . message )
78
+ }
79
+ return Promise . reject ( error )
80
+ }
81
+ )
82
+
83
+ return instanceAxios
84
+ }
85
+
46
86
class FetchApi {
47
87
private axiosDefault : AxiosInstance
48
88
@@ -58,17 +98,21 @@ class FetchApi {
58
98
this . baseUri = baseUri
59
99
}
60
100
101
+ /**
102
+ * axios instance default
103
+ */
61
104
get default ( ) : AxiosInstance {
62
105
if ( ! this . axiosDefault ) {
63
- this . axiosDefault = axios . create ( {
64
- baseURL : this . baseUri ,
65
- } )
106
+ this . axiosDefault = createDefaultAxios ( this . baseUri )
66
107
return this . axiosDefault
67
108
}
68
109
69
110
return this . axiosDefault
70
111
}
71
112
113
+ /**
114
+ * axios instance with auth token
115
+ */
72
116
get withAuth ( ) : AxiosInstance {
73
117
if ( ! this . axiosToken ) {
74
118
this . axiosToken = createAuthAxios ( this . baseUri )
0 commit comments