MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / createGravityProvider

Function createGravityProvider

web/src/lib/ad-providers/gravity.ts:85–181  ·  view source on GitHub ↗
(config: { apiKey: string })

Source from the content-addressed store, hash-verified

83}
84
85export function createGravityProvider(config: { apiKey: string }): AdProvider {
86 return {
87 id: 'gravity',
88 fetchAd: async (input: FetchAdInput): Promise<FetchAdResult> => {
89 const {
90 userId,
91 userEmail,
92 sessionId,
93 clientIp,
94 device,
95 messages = [],
96 testMode,
97 logger,
98 fetch,
99 } = input
100
101 const filteredMessages = prepareGravityMessages(messages)
102
103 const placementIds =
104 input.surface === 'waiting_room'
105 ? WAITING_ROOM_PLACEMENT_IDS
106 : CHOICE_PLACEMENT_IDS
107
108 const placements = placementIds.map((id) => ({
109 placement: 'below_response',
110 placement_id: id,
111 }))
112
113 const deviceBody = clientIp
114 ? {
115 ip: clientIp,
116 ...(device?.os ? { os: device.os } : {}),
117 ...(device?.timezone ? { timezone: device.timezone } : {}),
118 ...(device?.locale ? { locale: device.locale } : {}),
119 }
120 : undefined
121
122 const requestBody = {
123 messages: filteredMessages,
124 sessionId: sessionId ?? userId,
125 placements,
126 testAd: testMode,
127 relevancy: 0,
128 ...(deviceBody ? { device: deviceBody } : {}),
129 user: {
130 id: userId,
131 email: userEmail ?? undefined,
132 },
133 }
134
135 const response = await fetch(GRAVITY_URL, {
136 method: 'POST',
137 headers: {
138 Authorization: `Bearer ${config.apiKey}`,
139 'Content-Type': 'application/json',
140 },
141 body: JSON.stringify(requestBody),
142 })

Callers 1

createConfiguredProviderFunction · 0.90

Calls 3

prepareGravityMessagesFunction · 0.85
getMethod · 0.65
fetchFunction · 0.50

Tested by

no test coverage detected