DataResponse
public struct DataResponse<Success, Failure> : Sendable where Success : Sendable, Failure : Error
extension DataResponse: CustomStringConvertible, CustomDebugStringConvertible
Type used to store all values associated with a serialized response of a DataRequest
or UploadRequest
.
-
The URL request sent to the server.
Declaration
Swift
public let request: URLRequest?
-
The server’s response to the URL request.
Declaration
Swift
public let response: HTTPURLResponse?
-
The data returned by the server.
Declaration
Swift
public let data: Data?
-
The final metrics of the response.
Note
Due toFB7624529
, collection ofURLSessionTaskMetrics
on watchOS is currently disabled.`Declaration
Swift
public let metrics: URLSessionTaskMetrics?
-
The time taken to serialize the response.
Declaration
Swift
public let serializationDuration: TimeInterval
-
The result of response serialization.
Declaration
Swift
public let result: Result<Success, Failure>
-
Returns the associated value of the result if it is a success,
nil
otherwise.Declaration
Swift
public var value: Success? { get }
-
Returns the associated error value if the result if it is a failure,
nil
otherwise.Declaration
Swift
public var error: Failure? { get }
-
Creates a
DataResponse
instance with the specified parameters derived from the response serialization.Declaration
Swift
public init(request: URLRequest?, response: HTTPURLResponse?, data: Data?, metrics: URLSessionTaskMetrics?, serializationDuration: TimeInterval, result: Result<Success, Failure>)
Parameters
request
The
URLRequest
sent to the server.response
The
HTTPURLResponse
from the server.data
The
Data
returned by the server.metrics
The
URLSessionTaskMetrics
of theDataRequest
orUploadRequest
.serializationDuration
The duration taken by serialization.
result
The
Result
of response serialization. -
The textual representation used when written to an output stream, which includes whether the result was a success or failure.
Declaration
Swift
public var description: String { get }
-
The debug textual representation used when written to an output stream, which includes (if available) a summary of the
URLRequest
, the request’s headers and body (if decodable as aString
below 100KB); theHTTPURLResponse
‘s status code, headers, and body; the duration of the network and serialization actions; and theResult
of serialization.Declaration
Swift
public var debugDescription: String { get }
-
Evaluates the specified closure when the result of this
DataResponse
is a success, passing the unwrapped result value as a parameter.Use the
map
method with a closure that does not throw. For example:let possibleData: DataResponse<Data> = ... let possibleInt = possibleData.map { $0.count }
Declaration
Swift
public func map<NewSuccess>(_ transform: (Success) -> NewSuccess) -> DataResponse<NewSuccess, Failure> where NewSuccess : Sendable
Parameters
transform
A closure that takes the success value of the instance’s result.
Return Value
A
DataResponse
whose result wraps the value returned by the given closure. If this instance’s result is a failure, returns a response wrapping the same failure. -
Evaluates the given closure when the result of this
DataResponse
is a success, passing the unwrapped result value as a parameter.Use the
tryMap
method with a closure that may throw an error. For example:let possibleData: DataResponse<Data> = ... let possibleObject = possibleData.tryMap { try JSONSerialization.jsonObject(with: $0) }
Declaration
Swift
public func tryMap<NewSuccess>(_ transform: (Success) throws -> NewSuccess) -> DataResponse<NewSuccess, any Error> where NewSuccess : Sendable
Parameters
transform
A closure that takes the success value of the instance’s result.
Return Value
A success or failure
DataResponse
depending on the result of the given closure. If this instance’s result is a failure, returns the same failure. -
Evaluates the specified closure when the
DataResponse
is a failure, passing the unwrapped error as a parameter.Use the
mapError
function with a closure that does not throw. For example:let possibleData: DataResponse<Data> = ... let withMyError = possibleData.mapError { MyError.error($0) }
Declaration
Swift
public func mapError<NewFailure>(_ transform: (Failure) -> NewFailure) -> DataResponse<Success, NewFailure> where NewFailure : Error
Parameters
transform
A closure that takes the error of the instance.
Return Value
A
DataResponse
instance containing the result of the transform. -
Evaluates the specified closure when the
DataResponse
is a failure, passing the unwrapped error as a parameter.Use the
tryMapError
function with a closure that may throw an error. For example:let possibleData: DataResponse<Data> = ... let possibleObject = possibleData.tryMapError { try someFailableFunction(taking: $0) }
Declaration
Swift
public func tryMapError<NewFailure>(_ transform: (Failure) throws -> NewFailure) -> DataResponse<Success, any Error> where NewFailure : Error
Parameters
transform
A throwing closure that takes the error of the instance.
Return Value
A
DataResponse
instance containing the result of the transform.