MCPcopy
hub / github.com/Effect-TS/effect / make

Function make

packages/platform/src/internal/httpClient.ts:196–284  ·  view source on GitHub ↗
(
  f: (
    request: ClientRequest.HttpClientRequest,
    url: URL,
    signal: AbortSignal,
    fiber: Fiber.RuntimeFiber<ClientResponse.HttpClientResponse, Error.HttpClientError>
  ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError>
)

Source from the content-addressed store, hash-verified

194
195/** @internal */
196export const make = (
197 f: (
198 request: ClientRequest.HttpClientRequest,
199 url: URL,
200 signal: AbortSignal,
201 fiber: Fiber.RuntimeFiber<ClientResponse.HttpClientResponse, Error.HttpClientError>
202 ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError>
203): Client.HttpClient =>
204 makeWith((effect) =>
205 Effect.flatMap(effect, (request) =>
206 Effect.withFiberRuntime((fiber) => {
207 const scopedController = scopedRequests.get(request)
208 const controller = scopedController ?? new AbortController()
209 const urlResult = UrlParams.makeUrl(request.url, request.urlParams, request.hash)
210 if (urlResult._tag === "Left") {
211 return Effect.fail(new Error.RequestError({ request, reason: "InvalidUrl", cause: urlResult.left }))
212 }
213 const url = urlResult.right
214 const tracerDisabled = !fiber.getFiberRef(FiberRef.currentTracerEnabled) ||
215 fiber.getFiberRef(currentTracerDisabledWhen)(request)
216 if (tracerDisabled) {
217 const effect = f(request, url, controller.signal, fiber)
218 if (scopedController) return effect
219 return Effect.uninterruptibleMask((restore) =>
220 Effect.matchCauseEffect(restore(effect), {
221 onSuccess(response) {
222 responseRegistry.register(response, controller)
223 return Effect.succeed(new InterruptibleResponse(response, controller))
224 },
225 onFailure(cause) {
226 if (Cause.isInterrupted(cause)) {
227 controller.abort()
228 }
229 return Effect.failCause(cause)
230 }
231 })
232 )
233 }
234 const nameGenerator = Context.get(fiber.currentContext, SpanNameGenerator)
235 return Effect.useSpan(
236 nameGenerator(request),
237 { kind: "client", captureStackTrace: false },
238 (span) => {
239 span.attribute(ATTR_HTTP_REQUEST_METHOD, request.method)
240 span.attribute(ATTR_SERVER_ADDRESS, url.origin)
241 if (url.port !== "") {
242 span.attribute(ATTR_SERVER_PORT, +url.port)
243 }
244 span.attribute(ATTR_URL_FULL, url.toString())
245 span.attribute(ATTR_URL_PATH, url.pathname)
246 span.attribute(ATTR_URL_SCHEME, url.protocol.slice(0, -1))
247 const query = url.search.slice(1)
248 if (query !== "") {
249 span.attribute(ATTR_URL_QUERY, query)
250 }
251 const redactedHeaderNames = fiber.getFiberRef(Headers.currentRedactedNames)
252 const redactedHeaders = Headers.redact(request.headers, redactedHeaderNames)
253 for (const name in redactedHeaders) {

Callers

nothing calls this directly

Calls 14

restoreFunction · 0.85
ATTR_HTTP_REQUEST_HEADERFunction · 0.85
StringInterface · 0.85
setHeadersMethod · 0.80
makeWithFunction · 0.70
getMethod · 0.65
failMethod · 0.65
getFiberRefMethod · 0.65
attributeMethod · 0.65
toStringMethod · 0.65
pipeMethod · 0.65

Tested by

no test coverage detected