Skip to content

Commit f3f45ab

Browse files
committed
fix: config fetch api
1 parent 0bf995b commit f3f45ab

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

src/config/Fetcher.ts

+27-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ import axios, { AxiosError, AxiosInstance } from 'axios'
33
import { get } from 'lodash'
44
import ResponseError from 'modules/Response/ResponseError'
55

6+
const AXIOS_TIMEOUT = process.env.AXIOS_TIMEOUT || 5000
7+
68
function createAuthAxios(baseURL: string): AxiosInstance {
79
const instanceAxios = axios.create({
810
baseURL,
11+
timeout: Number(AXIOS_TIMEOUT),
912
})
1013

1114
instanceAxios.interceptors.request.use((config) => {
@@ -25,14 +28,30 @@ function createAuthAxios(baseURL: string): AxiosInstance {
2528
return response
2629
},
2730
function onError(error: AxiosError) {
28-
const status = get(error, 'response.status', null)
29-
if (status === 401) {
31+
const statusCode = get(error, 'response.status', null)
32+
const message = get(error, 'response.data.message', null)
33+
34+
if (statusCode === 401) {
3035
console.log('Unauhtorized')
31-
return Promise.reject(error)
36+
throw new ResponseError.Unauthorized(message)
37+
}
38+
39+
if (statusCode === 400) {
40+
console.log('Bad Request')
41+
throw new ResponseError.BadRequest(message)
42+
}
43+
44+
if (statusCode === 404) {
45+
console.log('Not Found')
46+
throw new ResponseError.NotFound(message)
3247
}
3348

3449
const handleError = error?.response?.headers?.handleError
3550
if (!handleError || !handleError(error)) {
51+
if (error.code === 'ECONNREFUSED') {
52+
throw new ResponseError.InternalServer('service unavailable')
53+
}
54+
3655
console.log(error.message)
3756
throw new ResponseError.BadRequest(error.message)
3857
}
@@ -46,6 +65,7 @@ function createAuthAxios(baseURL: string): AxiosInstance {
4665
function createDefaultAxios(baseURL: string): AxiosInstance {
4766
const instanceAxios = axios.create({
4867
baseURL,
68+
timeout: Number(AXIOS_TIMEOUT),
4969
})
5070

5171
instanceAxios.interceptors.response.use(
@@ -73,6 +93,10 @@ function createDefaultAxios(baseURL: string): AxiosInstance {
7393

7494
const handleError = error?.response?.headers?.handleError
7595
if (!handleError || !handleError(error)) {
96+
if (error.code === 'ECONNREFUSED') {
97+
throw new ResponseError.InternalServer('service unavailable')
98+
}
99+
76100
console.log(error.message)
77101
throw new ResponseError.BadRequest(error.message)
78102
}

0 commit comments

Comments
 (0)