| 129 | } |
| 130 | |
| 131 | const getAuthorizationToken = (headers: HttpHeaders.Headers, authRequired: boolean) => { |
| 132 | const authorization = HttpHeaders.get(headers, "authorization") |
| 133 | if (Option.isNone(authorization)) { |
| 134 | return authRequired ? Effect.fail(new UnauthorizedError()) : Effect.succeed(Option.none<string>()) |
| 135 | } |
| 136 | |
| 137 | const [scheme, token] = authorization.value.split(" ") |
| 138 | if (!scheme || !token || scheme.toLowerCase() !== "bearer") { |
| 139 | return Effect.fail(new InvalidRequestError("", false)) |
| 140 | } |
| 141 | |
| 142 | return Effect.succeed(Option.some(token)) |
| 143 | } |
| 144 | |
| 145 | const makeResolveConfig = (config: Config) => { |
| 146 | let cached: Promise<ResolvedConfig> | undefined |