MCPcopy Create free account
hub / github.com/Effect-TS/effect / sendBody

Function sendBody

packages/platform/node/src/NodeHttpClient.ts:468–524  ·  view source on GitHub ↗
(
  nodeRequest: Http.ClientRequest,
  request: HttpClientRequest,
  body: Body.HttpBody
)

Source from the content-addressed store, hash-verified

466})
467
468const sendBody = (
469 nodeRequest: Http.ClientRequest,
470 request: HttpClientRequest,
471 body: Body.HttpBody
472): Effect.Effect<void, Error.HttpClientError> =>
473 Effect.suspend((): Effect.Effect<void, Error.HttpClientError> => {
474 switch (body._tag) {
475 case "Empty": {
476 nodeRequest.end()
477 return waitForFinish(nodeRequest, request)
478 }
479 case "Uint8Array":
480 case "Raw": {
481 nodeRequest.end(body.body)
482 return waitForFinish(nodeRequest, request)
483 }
484 case "FormData": {
485 const response = new globalThis.Response(body.formData)
486
487 response.headers.forEach((value, key) => {
488 nodeRequest.setHeader(key, value)
489 })
490
491 return Effect.tryPromise({
492 try: () => pipeline(Readable.fromWeb(response.body! as any), nodeRequest),
493 catch: (cause) =>
494 new Error.HttpClientError({
495 reason: new Error.TransportError({
496 request,
497 cause
498 })
499 })
500 })
501 }
502 case "Stream": {
503 return Stream.run(
504 Stream.mapError(body.stream, (cause) =>
505 new Error.HttpClientError({
506 reason: new Error.EncodeError({
507 request,
508 cause
509 })
510 })),
511 NodeSink.fromWritable({
512 evaluate: () => nodeRequest,
513 onError: (cause) =>
514 new Error.HttpClientError({
515 reason: new Error.TransportError({
516 request,
517 cause
518 })
519 })
520 })
521 )
522 }
523 }
524 })
525

Callers 1

NodeHttpClient.tsFile · 0.70

Calls 4

waitForFinishFunction · 0.85
endMethod · 0.65
forEachMethod · 0.65
runMethod · 0.45

Tested by

no test coverage detected