Hyperlinkv0.8.0-beta.28

NodeHttpClient

Effect.Effect<Client.HttpClient, never, HttpAgent>

Creates an HttpClient backed by Node http and https, using the current HttpAgent, streaming request bodies, and wrapping Node responses as HttpClientResponse values.

node:http
export const makeNodeHttp = Effect.gen(function*() {
  const agent = yield* HttpAgent
  return Client.make((request, url, signal) => {
    const nodeRequest = url.protocol === "https:" ?
      Https.request(url, {
        agent: agent.https,
        method: request.method,
        headers: request.headers,
        signal
      }) :
      Http.request(url, {
        agent: agent.http,
        method: request.method,
        headers: request.headers,
        signal
      })
    return Effect.forkChild(sendBody(nodeRequest, request, request.body)).pipe(
      Effect.flatMap(() => waitForResponse(nodeRequest, request)),
      Effect.map((_) => new NodeHttpResponse(request, _))
    )
  })
})
Referenced by 1 symbols