SpineResponse¶
class SpineResponse<Out : Any, out Failure : FailureSpec>(val httpResponse: HttpResponse, val failureSpec: Failure)
The type returned by request, encapsulating an HTTP response.
Most functionality on this type is provided by extensions.
Constructors¶
SpineResponse¶
constructor(httpResponse: HttpResponse, failureSpec: Failure)
Properties¶
failureSpec¶
val failureSpec: Failure
The FailureSpec that was defined in the endpoint that was called.
httpResponse¶
val httpResponse: HttpResponse
Ktor's underlying HttpResponse.
isSuccessful¶
val isSuccessful: Boolean
true if the HTTP status code is a success. false otherwise.
Functions¶
bodyOrNull¶
inline suspend fun <Out : Any> SpineResponse<Out, *>.bodyOrNull(): Out?
Deserializes the response body, returning null if the response is not successful.
The Ktor ContentNegotation plugin may be necessary for this function to work.
Example
See also
-
bodyOrThrow: Throw an exception on failure. -
handle: Handle failures exhaustively.
bodyOrThrow¶
inline suspend fun <Out : Any> SpineResponse<Out, *>.bodyOrThrow(): Out
Deserializes the response body, throwing a SpineReceptionException if the response is not successful.
The Ktor ContentNegotation plugin may be necessary for this function to work.
Example
See also
-
bodyOrNull: Returnnullon failure. -
handle: Handle failures exhaustively.
handle¶
inline suspend fun <Out : Any, O, F1> SpineResponse<Out, FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>>.handle(handle1: (F1) -> O, transform: (Out) -> O): O
Exhaustively handle failures.
If the request is successful, transform is called. If the request fails with the error F1, handle1 is called.
To learn more about failures, see the documentation.
Example
client.request(Api / Users / Users.create).handle(
handle1 = { println("Failed with $it") },
) { println("Created: " + it) }
See also
-
bodyOrNull: Treat all failures asnull. -
bodyOrThrow: Treat all failures as exceptions.
inline suspend fun <Out : Any, O, F1, F2> SpineResponse<Out, FailureSpec.Or<FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>, FailureSpec.ByCode<F2>>>.handle(
handle1: (F1) -> O,
handle2: (F2) -> O,
transform: (Out) -> O
): O
inline suspend fun <Out : Any, O, F1, F2, F3> SpineResponse<Out, FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>, FailureSpec.ByCode<F2>>, FailureSpec.ByCode<F3>>>.handle(
handle1: (F1) -> O,
handle2: (F2) -> O,
handle3: (F3) -> O,
transform: (Out) -> O
): O
inline suspend fun <Out : Any, O, F1, F2, F3, F4> SpineResponse<Out, FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>, FailureSpec.ByCode<F2>>, FailureSpec.ByCode<F3>>, FailureSpec.ByCode<F4>>>.handle(
handle1: (F1) -> O,
handle2: (F2) -> O,
handle3: (F3) -> O,
handle4: (F4) -> O,
transform: (Out) -> O
): O
inline suspend fun <Out : Any, O, F1, F2, F3, F4, F5> SpineResponse<Out, FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>, FailureSpec.ByCode<F2>>, FailureSpec.ByCode<F3>>, FailureSpec.ByCode<F4>>, FailureSpec.ByCode<F5>>>.handle(
handle1: (F1) -> O,
handle2: (F2) -> O,
handle3: (F3) -> O,
handle4: (F4) -> O,
handle5: (F5) -> O,
transform: (Out) -> O
): O
inline suspend fun <Out : Any, O, F1, F2, F3, F4, F5, F6> SpineResponse<Out, FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Or<FailureSpec.Never, FailureSpec.ByCode<F1>>, FailureSpec.ByCode<F2>>, FailureSpec.ByCode<F3>>, FailureSpec.ByCode<F4>>, FailureSpec.ByCode<F5>>, FailureSpec.ByCode<F6>>>.handle(
handle1: (F1) -> O,
handle2: (F2) -> O,
handle3: (F3) -> O,
handle4: (F4) -> O,
handle5: (F5) -> O,
handle6: (F6) -> O,
transform: (Out) -> O
): O
Exhaustively handle failures.
If the request is successful, transform is called. If the request fails with an error, the corresponding handler is called.
To learn more about failures, see the documentation.
Example
client.request(Api / Users / Users.create).handle(
handle1 = { println("Failed with $it") },
) { println("Created: " + it) }
See also
-
bodyOrNull: Treat all failures asnull. -
bodyOrThrow: Treat all failures as exceptions.