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
}