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 to FB7624529, collection of URLSessionTaskMetrics 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 the DataRequest or UploadRequest.

    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 a String below 100KB); the HTTPURLResponse‘s status code, headers, and body; the duration of the network and serialization actions; and the Result 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.