(
httpClient: HttpClient.HttpClient,
options: {
readonly transformClient?: ((client: HttpClient.HttpClient) => Effect.Effect<HttpClient.HttpClient>) | undefined
} = {}
)
| 4698 | }) {} |
| 4699 | |
| 4700 | export const make = ( |
| 4701 | httpClient: HttpClient.HttpClient, |
| 4702 | options: { |
| 4703 | readonly transformClient?: ((client: HttpClient.HttpClient) => Effect.Effect<HttpClient.HttpClient>) | undefined |
| 4704 | } = {} |
| 4705 | ): Client => { |
| 4706 | const unexpectedStatus = (response: HttpClientResponse.HttpClientResponse) => |
| 4707 | Effect.flatMap( |
| 4708 | Effect.orElseSucceed(response.json, () => "Unexpected status code"), |
| 4709 | (description) => |
| 4710 | Effect.fail( |
| 4711 | new HttpClientError.ResponseError({ |
| 4712 | request: response.request, |
| 4713 | response, |
| 4714 | reason: "StatusCode", |
| 4715 | description: typeof description === "string" ? description : JSON.stringify(description) |
| 4716 | }) |
| 4717 | ) |
| 4718 | ) |
| 4719 | const withResponse: <A, E>( |
| 4720 | f: (response: HttpClientResponse.HttpClientResponse) => Effect.Effect<A, E> |
| 4721 | ) => ( |
| 4722 | request: HttpClientRequest.HttpClientRequest |
| 4723 | ) => Effect.Effect<any, any> = options.transformClient |
| 4724 | ? (f) => (request) => |
| 4725 | Effect.flatMap( |
| 4726 | Effect.flatMap(options.transformClient!(httpClient), (client) => client.execute(request)), |
| 4727 | f |
| 4728 | ) |
| 4729 | : (f) => (request) => Effect.flatMap(httpClient.execute(request), f) |
| 4730 | const decodeSuccess = <A, I, R>(schema: S.Schema<A, I, R>) => (response: HttpClientResponse.HttpClientResponse) => |
| 4731 | HttpClientResponse.schemaBodyJson(schema)(response) |
| 4732 | // @ts-expect-error |
| 4733 | // eslint-disable-next-line @typescript-eslint/no-unused-vars |
| 4734 | const decodeError = |
| 4735 | <const Tag extends string, A, I, R>(tag: Tag, schema: S.Schema<A, I, R>) => |
| 4736 | (response: HttpClientResponse.HttpClientResponse) => |
| 4737 | Effect.flatMap( |
| 4738 | HttpClientResponse.schemaBodyJson(schema)(response), |
| 4739 | (cause) => Effect.fail(ClientError(tag, cause, response)) |
| 4740 | ) |
| 4741 | return { |
| 4742 | httpClient, |
| 4743 | "ListOperations": (tunedModel, options) => |
| 4744 | HttpClientRequest.get(`/v1beta/tunedModels/${tunedModel}/operations`).pipe( |
| 4745 | HttpClientRequest.setUrlParams({ |
| 4746 | "filter": options?.["filter"] as any, |
| 4747 | "pageSize": options?.["pageSize"] as any, |
| 4748 | "pageToken": options?.["pageToken"] as any, |
| 4749 | "returnPartialSuccess": options?.["returnPartialSuccess"] as any |
| 4750 | }), |
| 4751 | withResponse(HttpClientResponse.matchStatus({ |
| 4752 | "2xx": decodeSuccess(ListOperationsResponse), |
| 4753 | orElse: unexpectedStatus |
| 4754 | })) |
| 4755 | ), |
| 4756 | "ListOperationsBy": (options) => |
| 4757 | HttpClientRequest.get(`/v1beta/batches`).pipe( |
no test coverage detected