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 Sep 18, 2020 · 4 revisions

DownloadRequest

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

public class DownloadRequest:​ Request

Inheritance

Request

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.

public typealias Destination = (_ temporaryURL:​ URL,
                                    _ response:​ HTTPURLResponse) -> (destinationURL:​ URL, options:​ Options)

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.

public typealias Validation = (_ request:​ URLRequest?,
                                   _ response:​ HTTPURLResponse,
                                   _ fileURL:​ URL?)
        -> ValidationResult

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?

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

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

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

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

Parameters

  • 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

Parameters

  • 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.

Parameters

  • 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.

Parameters

  • 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.

Types
Protocols
Global Typealiases
Clone this wiki locally