MCPcopy Create free account
hub / github.com/effect-app/libs / make

Function make

repos/effect/packages/effect/src/unstable/http/HttpClient.ts:627–722  ·  view source on GitHub ↗
(
  f: (
    request: HttpClientRequest.HttpClientRequest,
    url: URL,
    signal: AbortSignal,
    fiber: Fiber.Fiber<HttpClientResponse.HttpClientResponse, Error.HttpClientError>
  ) => Effect.Effect<HttpClientResponse.HttpClientResponse, Error.HttpClientError>
)

Source from the content-addressed store, hash-verified

625 * @category constructors
626 * @since 4.0.0
627 */
628export const make = (
629 f: (
630 request: HttpClientRequest.HttpClientRequest,
631 url: URL,
632 signal: AbortSignal,
633 fiber: Fiber.Fiber<HttpClientResponse.HttpClientResponse, Error.HttpClientError>
634 ) => Effect.Effect<HttpClientResponse.HttpClientResponse, Error.HttpClientError>
635): HttpClient =>
636 makeWith((effect) =>
637 Effect.flatMap(effect, (request) =>
638 Effect.withFiber((fiber) => {
639 const scopedController = scopedRequests.get(request)
640 const controller = scopedController ?? new AbortController()
641 const urlResult = Url.make(request.url, request.urlParams, Option.getOrUndefined(request.hash))
642 if (Result.isFailure(urlResult)) {
643 return Effect.fail(
644 new Error.HttpClientError({
645 reason: new Error.InvalidUrlError({
646 request,
647 cause: urlResult.failure
648 })
649 })
650 )
651 }
652 const url = urlResult.success
653 const tracerDisabled = fiber.getRef(Tracer.DisablePropagation) ||
654 fiber.getRef(TracerDisabledWhen)(request)
655 if (tracerDisabled) {
656 const effect = f(request, url, controller.signal, fiber as any)
657 if (scopedController) return effect
658 return Effect.uninterruptibleMask((restore) =>
659 Effect.matchCauseEffect(restore(effect), {
660 onSuccess(response) {
661 responseRegistry.register(response, controller)
662 return Effect.succeed(new InterruptibleResponse(response, controller))
663 },
664 onFailure(cause) {
665 if (Cause.hasInterrupts(cause)) {
666 controller.abort()
667 }
668 return Effect.failCause(cause)
669 }
670 })
671 )
672 }
673 return Effect.useSpan(
674 fiber.getRef(SpanNameGenerator)(request),
675 { kind: "client" },
676 (span) => {
677 span.attribute("http.request.method", request.method)
678 span.attribute("server.address", url.origin)
679 if (url.port !== "") {
680 span.attribute("server.port", +url.port)
681 }
682 span.attribute("url.full", url.toString())
683 span.attribute("url.path", url.pathname)
684 span.attribute("url.scheme", url.protocol.slice(0, -1))

Callers

nothing calls this directly

Calls 11

getRefMethod · 0.80
registerMethod · 0.80
makeWithFunction · 0.70
getMethod · 0.65
attributeMethod · 0.65
toStringMethod · 0.65
pipeMethod · 0.65
fFunction · 0.50
StringInterface · 0.50
failMethod · 0.45
succeedMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…