feature(api): override user-agent information
This commit is contained in:
@@ -19,7 +19,7 @@ export async function updateProfile(
|
|||||||
const projectId = request.projectId;
|
const projectId = request.projectId;
|
||||||
const ip = getClientIp(request)!;
|
const ip = getClientIp(request)!;
|
||||||
const ua = request.headers['user-agent']!;
|
const ua = request.headers['user-agent']!;
|
||||||
const uaInfo = parseUserAgent(ua);
|
const uaInfo = parseUserAgent(ua, properties);
|
||||||
const geo = await parseIp(ip);
|
const geo = await parseIp(ip);
|
||||||
|
|
||||||
await upsertProfile({
|
await upsertProfile({
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ async function identify({
|
|||||||
geo: GeoLocation;
|
geo: GeoLocation;
|
||||||
ua?: string;
|
ua?: string;
|
||||||
}) {
|
}) {
|
||||||
const uaInfo = parseUserAgent(ua);
|
const uaInfo = parseUserAgent(ua, payload.properties);
|
||||||
await upsertProfile({
|
await upsertProfile({
|
||||||
...payload,
|
...payload,
|
||||||
id: payload.profileId,
|
id: payload.profileId,
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export async function incomingEvent(job: Job<EventsQueuePayloadIncomingEvent>) {
|
|||||||
const userAgent = headers['user-agent'];
|
const userAgent = headers['user-agent'];
|
||||||
const sdkName = headers['openpanel-sdk-name'];
|
const sdkName = headers['openpanel-sdk-name'];
|
||||||
const sdkVersion = headers['openpanel-sdk-version'];
|
const sdkVersion = headers['openpanel-sdk-version'];
|
||||||
const uaInfo = parseUserAgent(userAgent);
|
const uaInfo = parseUserAgent(userAgent, properties);
|
||||||
|
|
||||||
const baseEvent = {
|
const baseEvent = {
|
||||||
name: body.name,
|
name: body.name,
|
||||||
@@ -121,7 +121,7 @@ export async function incomingEvent(job: Job<EventsQueuePayloadIncomingEvent>) {
|
|||||||
referrer: sessionEnd.payload?.referrer,
|
referrer: sessionEnd.payload?.referrer,
|
||||||
referrerName: sessionEnd.payload?.referrerName,
|
referrerName: sessionEnd.payload?.referrerName,
|
||||||
referrerType: sessionEnd.payload?.referrerType,
|
referrerType: sessionEnd.payload?.referrerType,
|
||||||
});
|
}) as IServiceCreateEventPayload
|
||||||
|
|
||||||
if (sessionEnd.notFound) {
|
if (sessionEnd.notFound) {
|
||||||
await createSessionEnd({ payload });
|
await createSessionEnd({ payload });
|
||||||
|
|||||||
@@ -68,7 +68,10 @@ const parse = (ua: string): UAParser.IResult => {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function parseUserAgent(ua?: string | null) {
|
export function parseUserAgent(
|
||||||
|
ua?: string | null,
|
||||||
|
overrides?: Record<string, unknown>,
|
||||||
|
) {
|
||||||
if (!ua) return parsedServerUa;
|
if (!ua) return parsedServerUa;
|
||||||
const res = parse(ua);
|
const res = parse(ua);
|
||||||
|
|
||||||
@@ -77,13 +80,13 @@ export function parseUserAgent(ua?: string | null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
os: res.os.name,
|
os: overrides?.__os || res.os.name,
|
||||||
osVersion: res.os.version,
|
osVersion: overrides?.__osVersion || res.os.version,
|
||||||
browser: res.browser.name,
|
browser: overrides?.__browser || res.browser.name,
|
||||||
browserVersion: res.browser.version,
|
browserVersion: overrides?.__browserVersion || res.browser.version,
|
||||||
device: res.device.type ?? getDevice(ua),
|
device: overrides?.__device || res.device.type || getDevice(ua),
|
||||||
brand: res.device.vendor,
|
brand: overrides?.__brand || res.device.vendor,
|
||||||
model: res.device.model,
|
model: overrides?.__model || res.device.model,
|
||||||
isServer: false,
|
isServer: false,
|
||||||
} as const;
|
} as const;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user