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

Function postGravityIndex

web/src/app/api/v1/gravity-index/_post.ts:122–263  ·  view source on GitHub ↗
(params: {
  req: NextRequest
  getUserInfoFromApiKey: GetUserInfoFromApiKeyFn
  logger: Logger
  loggerWithContext: LoggerWithContextFn
  trackEvent: TrackEventFn
  fetch: typeof globalThis.fetch
  serverEnv: {
    GRAVITY_API_KEY?: string
  }
})

Source from the content-addressed store, hash-verified

120}
121
122export async function postGravityIndex(params: {
123 req: NextRequest
124 getUserInfoFromApiKey: GetUserInfoFromApiKeyFn
125 logger: Logger
126 loggerWithContext: LoggerWithContextFn
127 trackEvent: TrackEventFn
128 fetch: typeof globalThis.fetch
129 serverEnv: {
130 GRAVITY_API_KEY?: string
131 }
132}) {
133 const {
134 req,
135 getUserInfoFromApiKey,
136 loggerWithContext,
137 trackEvent,
138 fetch,
139 serverEnv,
140 } = params
141 const baseLogger = params.logger
142
143 const parsedBody = await parseJsonBody({
144 req,
145 schema: gravityIndexInputSchema,
146 logger: baseLogger,
147 trackEvent,
148 validationErrorEvent: AnalyticsEvent.GRAVITY_INDEX_VALIDATION_ERROR,
149 })
150 if (!parsedBody.ok) return parsedBody.response
151
152 const authed = await requireUserFromApiKey({
153 req,
154 getUserInfoFromApiKey,
155 logger: baseLogger,
156 loggerWithContext,
157 trackEvent,
158 authErrorEvent: AnalyticsEvent.GRAVITY_INDEX_AUTH_ERROR,
159 })
160 if (!authed.ok) return authed.response
161
162 const { userId, logger } = authed.data
163 const input = parsedBody.data
164 const gravityApiKey = serverEnv.GRAVITY_API_KEY
165
166 trackEvent({
167 event: AnalyticsEvent.GRAVITY_INDEX_REQUEST,
168 userId,
169 properties: { action: input.action },
170 logger,
171 })
172
173 if (gravityIndexActionRequiresApiKey(input.action) && !gravityApiKey) {
174 logger.error('GRAVITY_API_KEY is not configured')
175 trackEvent({
176 event: AnalyticsEvent.GRAVITY_INDEX_ERROR,
177 userId,
178 properties: { reason: 'missing_gravity_api_key' },
179 logger,

Callers 2

POSTFunction · 0.90

Calls 10

parseJsonBodyFunction · 0.90
requireUserFromApiKeyFunction · 0.90
setTimeoutFunction · 0.85
buildGravityIndexRequestFunction · 0.85
redactGravityApiKeyFunction · 0.85
getErrorMessageFunction · 0.85
tryParseJsonFunction · 0.70
trackEventFunction · 0.50
fetchFunction · 0.50

Tested by

no test coverage detected