export type GetApiVisitVisitorArgs = {'user-agent': string, siteCode: string, currentVisit?: boolean | undefined, maxNumberPreviousVisits: number, visitorCode?: string | undefined, mappingValue?: string | undefined, all?: boolean | undefined, staticData?: boolean | undefined, page?: boolean | undefined, conversion?: boolean | undefined, targetingSegment?: boolean | undefined, experiment?: boolean | undefined, weather?: boolean | undefined, customData?: boolean | undefined, product?: boolean | undefined, personalization?: boolean | undefined, geolocation?: boolean | undefined, prettyPrint?: boolean | undefined}; export type GetApiVisitVisitorOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * Get visitor data * * GET /visit/visitor */ export const getApiVisitVisitor = async (args: GetApiVisitVisitorArgs, options?: GetApiVisitVisitorOptions) => { const {baseUrl = "https://api.kameleoon.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() if (args['user-agent'] != null) headers.set("user-agent", String(args['user-agent'])) if (args.siteCode != null) query.append("siteCode", String(args.siteCode)) if (args.currentVisit != null) query.append("currentVisit", String(args.currentVisit)) if (args.maxNumberPreviousVisits != null) query.append("maxNumberPreviousVisits", String(args.maxNumberPreviousVisits)) if (args.visitorCode != null) query.append("visitorCode", String(args.visitorCode)) if (args.mappingValue != null) query.append("mappingValue", String(args.mappingValue)) if (args.all != null) query.append("all", String(args.all)) if (args.staticData != null) query.append("staticData", String(args.staticData)) if (args.page != null) query.append("page", String(args.page)) if (args.conversion != null) query.append("conversion", String(args.conversion)) if (args.targetingSegment != null) query.append("targetingSegment", String(args.targetingSegment)) if (args.experiment != null) query.append("experiment", String(args.experiment)) if (args.weather != null) query.append("weather", String(args.weather)) if (args.customData != null) query.append("customData", String(args.customData)) if (args.product != null) query.append("product", String(args.product)) if (args.personalization != null) query.append("personalization", String(args.personalization)) if (args.geolocation != null) query.append("geolocation", String(args.geolocation)) if (args.prettyPrint != null) query.append("prettyPrint", String(args.prettyPrint)) const url = `${baseUrl.replace(/\/+$/, '')}/visit/visitor${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };