MCPcopy Index your code
hub / github.com/massCodeIO/massCode / parseRequestBody

Function parseRequestBody

src/main/http/import/openapi.ts:301–370  ·  view source on GitHub ↗
(
  rawBody: unknown,
  root: UnknownRecord,
  source: string,
  warnings: HttpImportWarning[],
)

Source from the content-addressed store, hash-verified

299}
300
301function parseRequestBody(
302 rawBody: unknown,
303 root: UnknownRecord,
304 source: string,
305 warnings: HttpImportWarning[],
306): Pick<HttpImportRequest, 'body' | 'bodyType' | 'formData'> {
307 const body = resolveRef(root, rawBody)
308 if (!isRecord(body) || !isRecord(body.content)) {
309 return { body: null, bodyType: 'none', formData: [] }
310 }
311
312 const pickedMedia = pickMediaEntry(body.content)
313 if (!pickedMedia) {
314 addWarning(warnings, source, 'Request body content skipped')
315 return { body: null, bodyType: 'none', formData: [] }
316 }
317
318 const example = pickedMedia.media.example
319 const value
320 = example !== undefined
321 ? example
322 : sampleFromSchema(resolveRef(root, pickedMedia.media.schema))
323
324 if (pickedMedia.mediaType === 'application/json') {
325 return {
326 body: typeof value === 'string' ? value : JSON.stringify(value, null, 2),
327 bodyType: 'json',
328 formData: [],
329 }
330 }
331
332 if (pickedMedia.mediaType === 'application/x-www-form-urlencoded') {
333 const formValue = isRecord(value) ? value : {}
334 return {
335 body: Object.entries(formValue)
336 .map(([key, entryValue]) => `${key}=${asString(entryValue)}`)
337 .join('&'),
338 bodyType: 'form-urlencoded',
339 formData: [],
340 }
341 }
342
343 if (pickedMedia.mediaType === 'multipart/form-data') {
344 const formValue = isRecord(value) ? value : {}
345 return {
346 body: null,
347 bodyType: 'multipart',
348 formData: Object.entries(formValue).map(([key, entryValue]) => ({
349 key,
350 type: 'text' as const,
351 value: asString(entryValue),
352 })),
353 }
354 }
355
356 if (pickedMedia.mediaType.startsWith('text/')) {
357 return { body: asString(value), bodyType: 'text', formData: [] }
358 }

Callers 1

parseOperationFunction · 0.85

Calls 6

addWarningFunction · 0.90
resolveRefFunction · 0.85
pickMediaEntryFunction · 0.85
sampleFromSchemaFunction · 0.85
isRecordFunction · 0.70
asStringFunction · 0.70

Tested by

no test coverage detected