Skip to content

Commit

Permalink
accept Redacted in HttpClientRequest.basicAuth/bearerToken (#3614)
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart authored Sep 16, 2024
1 parent 798a6d5 commit e44c5f2
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
5 changes: 5 additions & 0 deletions .changeset/ninety-avocados-crash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@effect/platform": patch
---

accept Redacted in HttpClientRequest.basicAuth/bearerToken
9 changes: 5 additions & 4 deletions packages/platform/src/HttpClientRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type * as Schema from "@effect/schema/Schema"
import type * as Effect from "effect/Effect"
import type { Inspectable } from "effect/Inspectable"
import type * as Option from "effect/Option"
import type { Redacted } from "effect/Redacted"
import type { Scope } from "effect/Scope"
import type * as Stream from "effect/Stream"
import type * as PlatformError from "./Error.js"
Expand Down Expand Up @@ -173,17 +174,17 @@ export const setHeaders: {
* @category combinators
*/
export const basicAuth: {
(username: string, password: string): (self: HttpClientRequest) => HttpClientRequest
(self: HttpClientRequest, username: string, password: string): HttpClientRequest
(username: string | Redacted, password: string | Redacted): (self: HttpClientRequest) => HttpClientRequest
(self: HttpClientRequest, username: string | Redacted, password: string | Redacted): HttpClientRequest
} = internal.basicAuth

/**
* @since 1.0.0
* @category combinators
*/
export const bearerToken: {
(token: string): (self: HttpClientRequest) => HttpClientRequest
(self: HttpClientRequest, token: string): HttpClientRequest
(token: string | Redacted): (self: HttpClientRequest) => HttpClientRequest
(self: HttpClientRequest, token: string | Redacted): HttpClientRequest
} = internal.bearerToken

/**
Expand Down
27 changes: 21 additions & 6 deletions packages/platform/src/internal/httpClientRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as Effectable from "effect/Effectable"
import { dual } from "effect/Function"
import * as Inspectable from "effect/Inspectable"
import * as Option from "effect/Option"
import * as Redacted from "effect/Redacted"
import type * as Stream from "effect/Stream"
import type * as PlatformError from "../Error.js"
import type * as FileSystem from "../FileSystem.js"
Expand Down Expand Up @@ -171,17 +172,31 @@ export const setHeaders = dual<
self.body
))

const stringOrRedacted = (value: string | Redacted.Redacted): string =>
typeof value === "string" ? value : Redacted.value(value)

/** @internal */
export const basicAuth = dual<
(username: string, password: string) => (self: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest,
(self: ClientRequest.HttpClientRequest, username: string, password: string) => ClientRequest.HttpClientRequest
>(3, (self, username, password) => setHeader(self, "Authorization", `Basic ${btoa(`${username}:${password}`)}`))
(
username: string | Redacted.Redacted,
password: string | Redacted.Redacted
) => (self: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest,
(
self: ClientRequest.HttpClientRequest,
username: string | Redacted.Redacted,
password: string | Redacted.Redacted
) => ClientRequest.HttpClientRequest
>(
3,
(self, username, password) =>
setHeader(self, "Authorization", `Basic ${btoa(`${stringOrRedacted(username)}:${stringOrRedacted(password)}`)}`)
)

/** @internal */
export const bearerToken = dual<
(token: string) => (self: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest,
(self: ClientRequest.HttpClientRequest, token: string) => ClientRequest.HttpClientRequest
>(2, (self, token) => setHeader(self, "Authorization", `Bearer ${token}`))
(token: string | Redacted.Redacted) => (self: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest,
(self: ClientRequest.HttpClientRequest, token: string | Redacted.Redacted) => ClientRequest.HttpClientRequest
>(2, (self, token) => setHeader(self, "Authorization", `Bearer ${stringOrRedacted(token)}`))

/** @internal */
export const accept = dual<
Expand Down

0 comments on commit e44c5f2

Please sign in to comment.