const response = yield* fetchService
.json(
VisionApiResponse,
`${url}:annotate?key=${Redacted.value(key)}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(buildRequestBody(imageBuffer)),
},
)
.pipe(
Effect.map((res) => res.responses.filter((r) => !r.error)), // <-- this swallows errors, not ideal
Effect.flatMap((res) =>
res.length === 0
? Effect.fail(
new Error("No responses received from Vision API"),
)
: Effect.succeed(res[0]),
),
Effect.flatMap((response) =>
!!response
? Effect.succeed(response)
: Effect.fail(
new Error("No responses received from Vision API"),
),
),
);
const response = yield* fetchService
.json(
VisionApiResponse,
`${url}:annotate?key=${Redacted.value(key)}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(buildRequestBody(imageBuffer)),
},
)
.pipe(
Effect.map((res) => res.responses.filter((r) => !r.error)), // <-- this swallows errors, not ideal
Effect.flatMap((res) =>
res.length === 0
? Effect.fail(
new Error("No responses received from Vision API"),
)
: Effect.succeed(res[0]),
),
Effect.flatMap((response) =>
!!response
? Effect.succeed(response)
: Effect.fail(
new Error("No responses received from Vision API"),
),
),
);