function execute(request: HttpClientRequest.HttpClientRequest) {
return Effect.gen(function* () {
const response = yield * client.execute(request)
const extractedJson = yield * response.json
const error = yield * Schema.decodeUnknown(ServerErrorResponseSchema)(extractedJson).pipe(Effect.either)
if (Either.isRight(error)) {
return yield * Effect.fail(error.right.toError())
}
const success = yield * Schema.decodeUnknown(ServerSuccessResponseSchema)(extractedJson).pipe(Effect.either)
if (Either.isRight(success)) {
return yield * Effect.succeed(success.right)
}
return yield * Effect.fail(new MalformedServerResponseError({ raw: extractedJson, message: 'Recieved server response that is neither an error nor a success. Server sent an unexpected response.' }))
})
}
function execute(request: HttpClientRequest.HttpClientRequest) {
return Effect.gen(function* () {
const response = yield * client.execute(request)
const extractedJson = yield * response.json
const error = yield * Schema.decodeUnknown(ServerErrorResponseSchema)(extractedJson).pipe(Effect.either)
if (Either.isRight(error)) {
return yield * Effect.fail(error.right.toError())
}
const success = yield * Schema.decodeUnknown(ServerSuccessResponseSchema)(extractedJson).pipe(Effect.either)
if (Either.isRight(success)) {
return yield * Effect.succeed(success.right)
}
return yield * Effect.fail(new MalformedServerResponseError({ raw: extractedJson, message: 'Recieved server response that is neither an error nor a success. Server sent an unexpected response.' }))
})
}