feat: add userAgent and ipAddress to HttpServer for enhanced request tracking
This commit is contained in:
parent
ab3f748195
commit
d65aed6828
@ -2,10 +2,14 @@ import xior, { merge } from 'xior'
|
|||||||
|
|
||||||
const baseURL = import.meta.env.VITE_API_URL
|
const baseURL = import.meta.env.VITE_API_URL
|
||||||
|
|
||||||
export type THttpServer = { accessToken?: string }
|
export type THttpServer = {
|
||||||
|
accessToken?: string
|
||||||
|
ipAddress?: string | null
|
||||||
|
userAgent?: string | null
|
||||||
|
}
|
||||||
|
|
||||||
export const HttpServer = (parameters?: THttpServer) => {
|
export const HttpServer = (parameters?: THttpServer) => {
|
||||||
const { accessToken } = parameters || {}
|
const { accessToken, ipAddress, userAgent } = parameters || {}
|
||||||
const instance = xior.create({
|
const instance = xior.create({
|
||||||
baseURL,
|
baseURL,
|
||||||
})
|
})
|
||||||
@ -16,6 +20,8 @@ export const HttpServer = (parameters?: THttpServer) => {
|
|||||||
return merge(config, {
|
return merge(config, {
|
||||||
headers: {
|
headers: {
|
||||||
...(accessToken && { Authorization: `Bearer ${accessToken}` }),
|
...(accessToken && { Authorization: `Bearer ${accessToken}` }),
|
||||||
|
...(ipAddress && { 'X-Ip-Address': ipAddress }),
|
||||||
|
...(userAgent && { 'X-User-Agent': userAgent }),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@ -12,6 +12,10 @@ import { NewsDetailPage } from '~/pages/news-detail'
|
|||||||
import type { Route } from './+types/_news.detail.$slug'
|
import type { Route } from './+types/_news.detail.$slug'
|
||||||
|
|
||||||
export const loader = async ({ request, params }: Route.LoaderArgs) => {
|
export const loader = async ({ request, params }: Route.LoaderArgs) => {
|
||||||
|
const userAgent = request.headers.get('user-agent')
|
||||||
|
const ipAddress =
|
||||||
|
request.headers.get('cf-connecting-ip') ||
|
||||||
|
request.headers.get('x-forwarded-for')
|
||||||
const { userToken: accessToken } = await handleCookie(request)
|
const { userToken: accessToken } = await handleCookie(request)
|
||||||
let userData
|
let userData
|
||||||
if (accessToken) {
|
if (accessToken) {
|
||||||
@ -19,7 +23,12 @@ export const loader = async ({ request, params }: Route.LoaderArgs) => {
|
|||||||
userData = data
|
userData = data
|
||||||
}
|
}
|
||||||
const { slug } = params
|
const { slug } = params
|
||||||
let { data: newsDetailData } = await getNewsBySlug({ slug, accessToken })
|
let { data: newsDetailData } = await getNewsBySlug({
|
||||||
|
slug,
|
||||||
|
accessToken,
|
||||||
|
userAgent,
|
||||||
|
ipAddress,
|
||||||
|
})
|
||||||
const shouldSubscribe =
|
const shouldSubscribe =
|
||||||
(!accessToken || userData?.subscribe?.subscribe_plan?.code === 'basic') &&
|
(!accessToken || userData?.subscribe?.subscribe_plan?.code === 'basic') &&
|
||||||
newsDetailData?.is_premium
|
newsDetailData?.is_premium
|
||||||
|
|||||||
@ -7,12 +7,18 @@ import { handleCookie } from '~/libs/cookies'
|
|||||||
import type { Route } from './+types/actions.log.ads.$id'
|
import type { Route } from './+types/actions.log.ads.$id'
|
||||||
|
|
||||||
export const action = async ({ request, params }: Route.ActionArgs) => {
|
export const action = async ({ request, params }: Route.ActionArgs) => {
|
||||||
|
const userAgent = request.headers.get('user-agent')
|
||||||
|
const ipAddress =
|
||||||
|
request.headers.get('cf-connecting-ip') ||
|
||||||
|
request.headers.get('x-forwarded-for')
|
||||||
const { userToken: accessToken } = await handleCookie(request)
|
const { userToken: accessToken } = await handleCookie(request)
|
||||||
const { id } = params
|
const { id } = params
|
||||||
try {
|
try {
|
||||||
const { data: logsData } = await createLogAdsRequest({
|
const { data: logsData } = await createLogAdsRequest({
|
||||||
id,
|
id,
|
||||||
accessToken,
|
accessToken,
|
||||||
|
userAgent,
|
||||||
|
ipAddress,
|
||||||
})
|
})
|
||||||
|
|
||||||
return data(
|
return data(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user