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

DownloadRequest

mattt edited this page Jan 26, 2020 · 4 revisions

DownloadRequest

Request subclass which downloads Data to a file on disk using URLSessionDownloadTask.

public class DownloadRequest: Request

Request, CustomStringConvertible, Equatable, Hashable

Nested Types

Nested Type Aliases

Destination

A closure executed once a download request has successfully completed in order to determine where to move the temporary file written to during the download process. The closure takes two arguments: the temporary file URL and the URL response, and returns a two arguments: the file URL where the temporary file should be moved and the options defining how the file should be moved.

Typealias(context: Optional("DownloadRequest"), attributes: [], modifiers: [public], keyword: "typealias", name: "Destination", initializedType: Optional("(_ temporaryURL: URL,\n                                    _ response: HTTPURLResponse) -> (destinationURL: URL, options: Options)"), genericParameters: [], genericRequirements: [])

Validation

A closure used to validate a request that takes a URL request, a URL response, a temporary URL and a destination URL, and returns whether the request was valid.

Typealias(context: Optional("DownloadRequest"), attributes: [], modifiers: [public], keyword: "typealias", name: "Validation", initializedType: Optional("(_ request: URLRequest?,\n                                   _ response: HTTPURLResponse,\n                                   _ fileURL: URL?)\n        -> ValidationResult"), genericParameters: [], genericRequirements: [])

ValidationResult

Used to represent whether a validation succeeded or failed.

Typealias(context: Optional("Request"), attributes: [], modifiers: [public], keyword: "typealias", name: "ValidationResult", initializedType: Optional("Result<Void, Error>"), genericParameters: [], genericRequirements: [])

Properties

resumeData

If the download is resumable and eventually cancelled, this value may be used to resume the download using the download(resumingWith data:) API.

var resumeData: Data?

Note: For more information about resumeData, see Apple's documentation.

fileURL

If the download is successful, the URL where the file was downloaded.

var fileURL: URL?

downloadable

Downloadable value used for this instance.

let downloadable: Downloadable

description

A textual representation of this instance, including the HTTPMethod and URL if the URLRequest has been created, as well as the response status code, if a response has been received.

var description: String

Methods

suggestedDownloadDestination(for:in:options:)

Creates a download file destination closure which uses the default file manager to move the temporary file to a file URL in the first available directory with the specified search path directory and search path domain mask.

public class func suggestedDownloadDestination(for directory: FileManager.SearchPathDirectory = .documentDirectory, in domain: FileManager.SearchPathDomainMask = .userDomainMask, options: Options = []) -> Destination

Parameters

  • directory: The search path directory. .documentDirectory by default.
  • domain: The search path domain mask. .userDomainMask by default.
  • options: DownloadRequest.Options used when moving the downloaded file to its destination. None by default.

Returns

The Destination closure.

task(forResumeData:using:)

Creates a URLSessionTask from the provided resume data.

public func task(forResumeData data: Data, using session: URLSession) -> URLSessionTask

Parameters

  • data: Data used to resume the download.
  • session: URLSession used to create the URLSessionTask.

Returns

The URLSessionTask created.

cancel()

Cancels the instance. Once cancelled, a DownloadRequest can no longer be resumed or suspended.

@discardableResult public override func cancel() -> Self

Note: This method will NOT produce resume data. If you wish to cancel and produce resume data, use cancel(producingResumeData:) or cancel(byProducingResumeData:).

Returns

The instance.

cancel(producingResumeData:)

Cancels the instance, optionally producing resume data. Once cancelled, a DownloadRequest can no longer be resumed or suspended.

@discardableResult public func cancel(producingResumeData shouldProduceResumeData: Bool) -> Self

Note: If producingResumeData is true, the resumeData property will be populated with any resume data, if available.

Returns

The instance.

cancel(byProducingResumeData:)

Cancels the instance while producing resume data. Once cancelled, a DownloadRequest can no longer be resumed or suspended.

@discardableResult public func cancel(byProducingResumeData completionHandler: @escaping (_ data: Data?) -> Void) -> Self

Note: The resume data passed to the completion handler will also be available on the instance's resumeData property.

  • Parameter completionHandler: The completion handler that is called when the download has been successfully cancelled. It is not guaranteed to be called on a particular queue, so you may want use an appropriate queue to perform your work.

Returns

The instance.

validate(_:)

Validates the request, using the specified closure.

@discardableResult public func validate(_ validation: @escaping Validation) -> Self

Note: If validation fails, subsequent calls to response handlers will have an associated error.

  • Parameter validation: Validation closure to validate the response.

Returns

The instance.

response(queue:completionHandler:)

Adds a handler to be called once the request has finished.

@discardableResult public func response(queue: DispatchQueue = .main, completionHandler: @escaping (AFDownloadResponse<URL?>) -> Void) -> Self

Parameters

  • queue: The queue on which the completion handler is dispatched. .main by default.
  • completionHandler: The code to be executed once the request has finished.

Returns

The request.

response(queue:responseSerializer:completionHandler:)

Adds a handler to be called once the request has finished.

@discardableResult public func response<T: DownloadResponseSerializerProtocol>(queue: DispatchQueue = .main, responseSerializer: T, completionHandler: @escaping (AFDownloadResponse<T.SerializedObject>) -> Void) -> Self

Parameters

  • queue: The queue on which the completion handler is dispatched. .main by default.
  • responseSerializer: The response serializer responsible for serializing the request, response, and data contained in the destination URL.
  • completionHandler: The code to be executed once the request has finished.

Returns

The request.

responseData(queue:completionHandler:)

Adds a handler to be called once the request has finished.

@discardableResult public func responseData(queue: DispatchQueue = .main, completionHandler: @escaping (AFDownloadResponse<Data>) -> Void) -> Self

Parameters

  • queue: The queue on which the completion handler is dispatched. .main by default.
  • completionHandler: The code to be executed once the request has finished.

Returns

The request.

responseString(queue:encoding:completionHandler:)

Adds a handler to be called once the request has finished.

@discardableResult public func responseString(queue: DispatchQueue = .main, encoding: String.Encoding? = nil, completionHandler: @escaping (AFDownloadResponse<String>) -> Void) -> Self

Parameters

  • queue: The queue on which the completion handler is dispatched. .main by default.
  • encoding: The string encoding. Defaults to nil, in which case the encoding will be determined from the server response, falling back to the default HTTP character set, ISO-8859-1.
  • completionHandler: A closure to be executed once the request has finished.

Returns

The request.

responseJSON(queue:options:completionHandler:)

Adds a handler to be called once the request has finished.

@discardableResult public func responseJSON(queue: DispatchQueue = .main, options: JSONSerialization.ReadingOptions = .allowFragments, completionHandler: @escaping (AFDownloadResponse<Any>) -> Void) -> Self

Parameters

  • queue: The queue on which the completion handler is dispatched. .main by default.
  • options: The JSON serialization reading options. .allowFragments by default.
  • completionHandler: A closure to be executed once the request has finished.

Returns

The request.

validate(statusCode:)

Validates that the response has a status code in the specified sequence.

@discardableResult public func validate<S: Sequence>(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int

If validation fails, subsequent calls to response handlers will have an associated error.

  • parameter range: The range of acceptable status codes.

Returns

The request.

validate(contentType:)

Validates that the response has a content type in the specified sequence.

@discardableResult public func validate<S: Sequence>(contentType acceptableContentTypes: @escaping @autoclosure () -> S) -> Self where S.Iterator.Element == String

If validation fails, subsequent calls to response handlers will have an associated error.

  • parameter contentType: The acceptable content types, which may specify wildcard types and/or subtypes.

Returns

The request.

validate()

Validates that the response has a status code in the default acceptable range of 200...299, and that the content type matches any specified in the Accept HTTP header field.

@discardableResult public func validate() -> Self

If validation fails, subsequent calls to response handlers will have an associated error.

Returns

The request.

==(lhs:rhs:)

public static func ==(lhs: Request, rhs: Request) -> Bool

hash(into:)

public func hash(into hasher: inout Hasher)

cURLDescription()

cURL representation of the instance.

public func cURLDescription() -> String

Returns

The cURL equivalent of the instance.

Types
Protocols
Global Typealiases
Clone this wiki locally