Skip to content
This repository has been archived by the owner on Oct 17, 2021. It is now read-only.

DownloadResponse

mattt edited this page Sep 18, 2020 · 2 revisions

DownloadResponse

Used to store all data associated with a serialized response of a download request.

public struct DownloadResponse<Success, Failure:​ Error>

Inheritance

CustomDebugStringConvertible, CustomStringConvertible

Initializers

init(request:​response:​fileURL:​resumeData:​metrics:​serializationDuration:​result:​)

Creates a DownloadResponse instance with the specified parameters derived from response serialization.

public init(request:​ URLRequest?, response:​ HTTPURLResponse?, fileURL:​ URL?, resumeData:​ Data?, metrics:​ URLSessionTaskMetrics?, serializationDuration:​ TimeInterval, result:​ Result<Success, Failure>)

Parameters

  • request:​ The URLRequest sent to the server.
  • response:​ The HTTPURLResponse from the server.
  • temporaryURL:​ The temporary destination URL of the data returned from the server.
  • destinationURL:​ The final destination URL of the data returned from the server, if it was moved.
  • resumeData:​ The resume Data generated if the request was cancelled.
  • metrics:​ The URLSessionTaskMetrics of the DownloadRequest.
  • serializationDuration:​ The duration taken by serialization.
  • result:​ The Result of response serialization.

Properties

request

The URL request sent to the server.

let request:​ URLRequest?

response

The server's response to the URL request.

let response:​ HTTPURLResponse?

fileURL

The final destination URL of the data returned from the server after it is moved.

let fileURL:​ URL?

resumeData

The resume data generated if the request was cancelled.

let resumeData:​ Data?

metrics

The final metrics of the response.

let metrics:​ URLSessionTaskMetrics?

serializationDuration

The time taken to serialize the response.

let serializationDuration:​ TimeInterval

result

The result of response serialization.

let result:​ Result<Success, Failure>

value

Returns the associated value of the result if it is a success, nil otherwise.

var value:​ Success?

error

Returns the associated error value if the result if it is a failure, nil otherwise.

var error:​ Failure?

description

The textual representation used when written to an output stream, which includes whether the result was a success or failure.

var description:​ String

debugDescription

The debug textual representation used when written to an output stream, which includes the URL request, the URL response, the temporary and destination URLs, the resume data, the durations of the network and serialization actions, and the response serialization result.

var debugDescription:​ String

Methods

map(_:​)

Evaluates the given closure when the result of this DownloadResponse is a success, passing the unwrapped result value as a parameter.

public func map<NewSuccess>(_ transform:(Success) -> NewSuccess) -> DownloadResponse<NewSuccess, Failure>

Use the map method with a closure that does not throw. For example:​

let possibleData:​ DownloadResponse<Data> = ...
let possibleInt = possibleData.map { $0.count }

Parameters

  • transform:​ A closure that takes the success value of the instance's result.

Returns

A DownloadResponse 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.

tryMap(_:​)

Evaluates the given closure when the result of this DownloadResponse is a success, passing the unwrapped result value as a parameter.

public func tryMap<NewSuccess>(_ transform:(Success) throws -> NewSuccess) -> DownloadResponse<NewSuccess, Error>

Use the tryMap method with a closure that may throw an error. For example:​

let possibleData:​ DownloadResponse<Data> = ...
let possibleObject = possibleData.tryMap {
    try JSONSerialization.jsonObject(with:​ $0)
}

Parameters

  • transform:​ A closure that takes the success value of the instance's result.

Returns

A success or failure DownloadResponse depending on the result of the given closure. If this instance's result is a failure, returns the same failure.

mapError(_:​)

Evaluates the specified closure when the DownloadResponse is a failure, passing the unwrapped error as a parameter.

public func mapError<NewFailure:​ Error>(_ transform:(Failure) -> NewFailure) -> DownloadResponse<Success, NewFailure>

Use the mapError function with a closure that does not throw. For example:​

let possibleData:​ DownloadResponse<Data> = ...
let withMyError = possibleData.mapError { MyError.error($0) }

Parameters

  • transform:​ A closure that takes the error of the instance.

Returns

A DownloadResponse instance containing the result of the transform.

tryMapError(_:​)

Evaluates the specified closure when the DownloadResponse is a failure, passing the unwrapped error as a parameter.

public func tryMapError<NewFailure:​ Error>(_ transform:(Failure) throws -> NewFailure) -> DownloadResponse<Success, Error>

Use the tryMapError function with a closure that may throw an error. For example:​

let possibleData:​ DownloadResponse<Data> = ...
let possibleObject = possibleData.tryMapError {
    try someFailableFunction(taking:​ $0)
}

Parameters

  • transform:​ A throwing closure that takes the error of the instance.

Returns

A DownloadResponse instance containing the result of the transform.

Types
Protocols
Global Typealiases
Clone this wiki locally