40 lines
932 B
TypeScript
40 lines
932 B
TypeScript
import xior, { merge } from 'xior'
|
|
|
|
const baseURL = import.meta.env.VITE_API_URL
|
|
|
|
export type THttpServer = {
|
|
accessToken?: string
|
|
ipAddress?: string | null
|
|
userAgent?: string | null
|
|
}
|
|
|
|
export const HttpServer = (parameters?: THttpServer) => {
|
|
const { accessToken, ipAddress, userAgent } = parameters || {}
|
|
const instance = xior.create({
|
|
baseURL,
|
|
})
|
|
instance.interceptors.request.use((config) => {
|
|
// eslint-disable-next-line no-console
|
|
console.info(`🚀requesting ${config.url}`)
|
|
|
|
return merge(config, {
|
|
headers: {
|
|
...(accessToken && { Authorization: `Bearer ${accessToken}` }),
|
|
...(ipAddress && { 'X-Ip-Address': ipAddress }),
|
|
...(userAgent && { 'X-User-Agent': userAgent }),
|
|
},
|
|
})
|
|
})
|
|
|
|
instance.interceptors.response.use(
|
|
(response) => {
|
|
return response
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error)
|
|
},
|
|
)
|
|
|
|
return instance
|
|
}
|