-
A set of options to be executed prior to moving a downloaded file from the temporary
See moreURL
to the destinationURL
.Declaration
Swift
public struct Options : OptionSet, Sendable
-
A closure executed once a
DownloadRequest
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 theHTTPURLResponse
, and returns two values: the file URL where the temporary file should be moved and the options defining how the file should be moved.Note
Downloads from a localfile://
URL
s do not use theDestination
closure, as those downloads do not return anHTTPURLResponse
. Instead the file is merely moved within the temporary directory.Declaration
Swift
public typealias Destination = @Sendable (_ temporaryURL: URL, _ response: HTTPURLResponse) -> (destinationURL: URL, options: 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.
Declaration
Swift
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.Return Value
The
Destination
closure.
-
Type describing the source used to create the underlying
See moreURLSessionDownloadTask
.Declaration
Swift
public enum Downloadable
-
If the download is resumable and is eventually cancelled or fails, this value may be used to resume the download using the
download(resumingWith data:)
API.Declaration
Swift
public var resumeData: Data? { get }
-
If the download is successful, the
URL
where the file was downloaded.Declaration
Swift
public var fileURL: URL? { get }
-
Downloadable
value used for this instance.Declaration
Swift
public let downloadable: Downloadable
-
Creates a
URLSessionTask
from the provided resume data.Declaration
Swift
public func task(forResumeData data: Data, using session: URLSession) -> URLSessionTask
Parameters
data
Data
used to resume the download.session
URLSession
used to create theURLSessionTask
.Return Value
The
URLSessionTask
created. -
Cancels the instance. Once cancelled, a
DownloadRequest
can no longer be resumed or suspended.Note
This method will NOT produce resume data. If you wish to cancel and produce resume data, use
cancel(producingResumeData:)
orcancel(byProducingResumeData:)
.Declaration
Swift
@discardableResult override public func cancel() -> Self
Return Value
The instance.
-
Cancels the instance, optionally producing resume data. Once cancelled, a
DownloadRequest
can no longer be resumed or suspended.Note
If
producingResumeData
istrue
, theresumeData
property will be populated with any resume data, if available.Declaration
Swift
@discardableResult public func cancel(producingResumeData shouldProduceResumeData: Bool) -> Self
Return Value
The instance.
-
Cancels the instance while producing resume data. Once cancelled, a
DownloadRequest
can no longer be resumed or suspended.Note
The resume data passed to the completion handler will also be available on the instance’s
resumeData
property.Declaration
Swift
@discardableResult @preconcurrency public func cancel(byProducingResumeData completionHandler: @escaping @Sendable (_ 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.
Return Value
The instance.
-
Validates the request, using the specified closure.
Note
If validation fails, subsequent calls to response handlers will have an associated error.
Declaration
Swift
@discardableResult public func validate(_ validation: @escaping Validation) -> Self
Parameters
validation
Validation
closure to validate the response.Return Value
The instance.
-
Adds a handler to be called once the request has finished.
Declaration
Swift
@discardableResult @preconcurrency public func response(queue: DispatchQueue = .main, completionHandler: @escaping @Sendable (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.
Return Value
The request.
-
Adds a handler to be called once the request has finished.
Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@discardableResult public func response<Serializer: DownloadResponseSerializerProtocol>(queue: DispatchQueue = .main, responseSerializer: Serializer, completionHandler: @escaping @Sendable (AFDownloadResponse<Serializer.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.
Return Value
The request.
-
Adds a handler to be called once the request has finished.
Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@discardableResult public func response<Serializer: ResponseSerializer>(queue: DispatchQueue = .main, responseSerializer: Serializer, completionHandler: @escaping @Sendable (AFDownloadResponse<Serializer.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.
Return Value
The request.
-
Adds a handler using a
URLResponseSerializer
to be called once the request is finished.Declaration
Swift
@discardableResult @preconcurrency public func responseURL(queue: DispatchQueue = .main, completionHandler: @escaping @Sendable (AFDownloadResponse<URL>) -> Void) -> Self
Parameters
queue
The queue on which the completion handler is called.
.main
by default.completionHandler
A closure to be executed once the request has finished.
Return Value
The request.
-
Adds a handler using a
DataResponseSerializer
to be called once the request has finished.Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@discardableResult @preconcurrency public func responseData(queue: DispatchQueue = .main, dataPreprocessor: any DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods, completionHandler: @escaping @Sendable (AFDownloadResponse<Data>) -> Void) -> Self
Parameters
queue
The queue on which the completion handler is called.
.main
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling thecompletionHandler
.PassthroughPreprocessor()
by default.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.completionHandler
A closure to be executed once the request has finished.
Return Value
The request.
-
responseString(queue:
dataPreprocessor: encoding: emptyResponseCodes: emptyRequestMethods: completionHandler: ) Adds a handler using a
StringResponseSerializer
to be called once the request has finished.Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@discardableResult @preconcurrency public func responseString(queue: DispatchQueue = .main, dataPreprocessor: any DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor, encoding: String.Encoding? = nil, emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods, completionHandler: @escaping @Sendable (AFDownloadResponse<String>) -> Void) -> Self
Parameters
queue
The queue on which the completion handler is dispatched.
.main
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling thecompletionHandler
.PassthroughPreprocessor()
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
.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.completionHandler
A closure to be executed once the request has finished.
Return Value
The request.
-
responseJSON(queue:
dataPreprocessor: emptyResponseCodes: emptyRequestMethods: options: completionHandler: ) Adds a handler using a
JSONResponseSerializer
to be called once the request has finished.Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@available(*, deprecated, message: "responseJSON deprecated and will be removed in Alamofire 6. Use responseDecodable instead.") @discardableResult @preconcurrency public func responseJSON(queue: DispatchQueue = .main, dataPreprocessor: any DataPreprocessor = JSONResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set<Int> = JSONResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = JSONResponseSerializer.defaultEmptyRequestMethods, options: JSONSerialization.ReadingOptions = .allowFragments, completionHandler: @escaping @Sendable (AFDownloadResponse<Any>) -> Void) -> Self
Parameters
queue
The queue on which the completion handler is dispatched.
.main
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling thecompletionHandler
.PassthroughPreprocessor()
by default.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.options
JSONSerialization.ReadingOptions
used when parsing the response..allowFragments
by default.completionHandler
A closure to be executed once the request has finished.
Return Value
The request.
-
responseDecodable(of:
queue: dataPreprocessor: decoder: emptyResponseCodes: emptyRequestMethods: completionHandler: ) Adds a handler using a
DecodableResponseSerializer
to be called once the request has finished.Note
This handler will read the entire downloaded file into memory, use with caution.
Declaration
Swift
@discardableResult @preconcurrency public func responseDecodable<T: Decodable>(of type: T.Type = T.self, queue: DispatchQueue = .main, dataPreprocessor: any DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor, decoder: any DataDecoder = JSONDecoder(), emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods, completionHandler: @escaping @Sendable (AFDownloadResponse<T>) -> Void) -> Self where T: Sendable
Parameters
type
Decodable
type to decode from response data.queue
The queue on which the completion handler is dispatched.
.main
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling thecompletionHandler
.PassthroughPreprocessor()
by default.decoder
DataDecoder
to use to decode the response.JSONDecoder()
by default.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.completionHandler
A closure to be executed once the request has finished.
Return Value
The request.
-
Creates a
DownloadResponsePublisher
for this instance using the givenResponseSerializer
andDispatchQueue
.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishResponse<Serializer: ResponseSerializer, T>(using serializer: Serializer, on queue: DispatchQueue = .main) -> DownloadResponsePublisher<T> where Serializer.SerializedObject == T
Parameters
serializer
ResponseSerializer
used to serialize the responseData
from disk.queue
DispatchQueue
on which theDownloadResponse
will be published..main
by default.Return Value
-
Creates a
DownloadResponsePublisher
for this instance using the givenDownloadResponseSerializerProtocol
andDispatchQueue
.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishResponse<Serializer: DownloadResponseSerializerProtocol, T>(using serializer: Serializer, on queue: DispatchQueue = .main) -> DownloadResponsePublisher<T> where Serializer.SerializedObject == T
Parameters
serializer
DownloadResponseSerializer
used to serialize the responseData
from disk.queue
DispatchQueue
on which theDownloadResponse
will be published..main
by default.Return Value
-
Creates a
DownloadResponsePublisher
for this instance and uses aURLResponseSerializer
to serialize the response.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishURL(queue: DispatchQueue = .main) -> DownloadResponsePublisher<URL>
Parameters
queue
DispatchQueue
on which theDownloadResponse
will be published..main
by default.Return Value
-
Creates a
DownloadResponsePublisher
for this instance and uses aDataResponseSerializer
to serialize the response.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishData(queue: DispatchQueue = .main, preprocessor: any DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods) -> DownloadResponsePublisher<Data>
Parameters
queue
DispatchQueue
on which theDownloadResponse
will be published..main
by default.preprocessor
DataPreprocessor
which filters theData
before serialization.PassthroughPreprocessor()
by default.emptyResponseCodes
Set<Int>
of HTTP status codes for which empty responses are allowed.[204, 205]
by default.emptyRequestMethods
Set<HTTPMethod>
ofHTTPMethod
s for which empty responses are allowed, regardless of status code.[.head]
by default.Return Value
-
Creates a
DownloadResponsePublisher
for this instance and uses aStringResponseSerializer
to serialize the response.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishString(queue: DispatchQueue = .main, preprocessor: any DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor, encoding: String.Encoding? = nil, emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods) -> DownloadResponsePublisher<String>
Parameters
queue
DispatchQueue
on which theDataResponse
will be published..main
by default.preprocessor
DataPreprocessor
which filters theData
before serialization.PassthroughPreprocessor()
by default.encoding
String.Encoding
to parse the response.nil
by default, in which case the encoding will be determined by the server response, falling back to the default HTTP character set,ISO-8859-1
.emptyResponseCodes
Set<Int>
of HTTP status codes for which empty responses are allowed.[204, 205]
by default.emptyRequestMethods
Set<HTTPMethod>
ofHTTPMethod
s for which empty responses are allowed, regardless of status code.[.head]
by default.Return Value
-
Undocumented
Declaration
Swift
@_disfavoredOverload public func publishDecodable<T: Decodable>(type: T.Type = T.self, queue: DispatchQueue = .main, preprocessor: any DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor, decoder: any DataDecoder = JSONDecoder(), emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes, emptyResponseMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods) -> DownloadResponsePublisher<T>
-
Creates a
DownloadResponsePublisher
for this instance and uses aDecodableResponseSerializer
to serialize the response.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishDecodable<T: Decodable>(type: T.Type = T.self, queue: DispatchQueue = .main, preprocessor: any DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor, decoder: any DataDecoder = JSONDecoder(), emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods) -> DownloadResponsePublisher<T>
Parameters
type
Decodable
type to which to decode responseData
. Inferred from the context by default.queue
DispatchQueue
on which theDataResponse
will be published..main
by default.preprocessor
DataPreprocessor
which filters theData
before serialization.PassthroughPreprocessor()
by default.decoder
DataDecoder
instance used to decode responseData
.JSONDecoder()
by default.emptyResponseCodes
Set<Int>
of HTTP status codes for which empty responses are allowed.[204, 205]
by default.emptyRequestMethods
Set<HTTPMethod>
ofHTTPMethod
s for which empty responses are allowed, regardless of status code.[.head]
by default.Return Value
-
Creates a
DownloadResponsePublisher
for this instance which does not serialize the response before publishing.Declaration
Swift
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) public func publishUnserialized(on queue: DispatchQueue = .main) -> DownloadResponsePublisher<URL?>
Parameters
queue
DispatchQueue
on which theDownloadResponse
will be published..main
by default.Return Value
-
Creates a
DownloadTask
toawait
aData
value.Declaration
Swift
public func serializingData(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: any DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods) -> DownloadTask<Data>
Parameters
shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before completion.emptyResponseCodes
HTTP response codes for which empty responses are allowed.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.Return Value
The
DownloadTask
. -
serializingDecodable(_:
automaticallyCancelling: dataPreprocessor: decoder: emptyResponseCodes: emptyRequestMethods: ) Creates a
DownloadTask
toawait
serialization of aDecodable
value.Note
This serializer reads the entire response into memory before parsing.
Declaration
Swift
public func serializingDecodable<Value: Decodable>(_ type: Value.Type = Value.self, automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: any DataPreprocessor = DecodableResponseSerializer<Value>.defaultDataPreprocessor, decoder: any DataDecoder = JSONDecoder(), emptyResponseCodes: Set<Int> = DecodableResponseSerializer<Value>.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<Value>.defaultEmptyRequestMethods) -> DownloadTask<Value>
Parameters
type
Decodable
type to decode from response data.shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling the serializer.PassthroughPreprocessor()
by default.decoder
DataDecoder
to use to decode the response.JSONDecoder()
by default.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.Return Value
The
DownloadTask
. -
Creates a
DownloadTask
toawait
serialization of the downloaded file’sURL
on disk.Declaration
Swift
public func serializingDownloadedFileURL(automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask<URL>
Parameters
shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.Return Value
The
DownloadTask
. -
serializingString(automaticallyCancelling:
dataPreprocessor: encoding: emptyResponseCodes: emptyRequestMethods: ) Creates a
DownloadTask
toawait
serialization of aString
value.Declaration
Swift
public func serializingString(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: any DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor, encoding: String.Encoding? = nil, emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods) -> DownloadTask<String>
Parameters
shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.dataPreprocessor
DataPreprocessor
which processes the receivedData
before calling the serializer.PassthroughPreprocessor()
by default.encoding
String.Encoding
to use during serialization. Defaults tonil
, in which case the encoding will be determined from the server response, falling back to the default HTTP character set,ISO-8859-1
.emptyResponseCodes
HTTP status codes for which empty responses are always valid.
[204, 205]
by default.emptyRequestMethods
HTTPMethod
s for which empty responses are always valid.[.head]
by default.Return Value
The
DownloadTask
. -
Creates a
DownloadTask
toawait
serialization using the providedResponseSerializer
instance.Declaration
Swift
public func serializingDownload<Serializer: ResponseSerializer>(using serializer: Serializer, automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask<Serializer.SerializedObject>
Parameters
serializer
ResponseSerializer
responsible for serializing the request, response, and data.shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.Return Value
The
DownloadTask
. -
Creates a
DownloadTask
toawait
serialization using the providedDownloadResponseSerializerProtocol
instance.Declaration
Swift
public func serializingDownload<Serializer: DownloadResponseSerializerProtocol>(using serializer: Serializer, automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask<Serializer.SerializedObject>
Parameters
serializer
DownloadResponseSerializerProtocol
responsible for serializing the request, response, and data.shouldAutomaticallyCancel
Bool
determining whether or not the request should be cancelled when the enclosing async context is cancelled. Only applies toDownloadTask
‘s async properties.true
by default.Return Value
The
DownloadTask
.
-
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.
Declaration
Swift
public typealias Validation = (_ request: URLRequest?, _ response: HTTPURLResponse, _ fileURL: URL?) -> ValidationResult
-
Validates that the response has a status code in the specified sequence.
If validation fails, subsequent calls to response handlers will have an associated error.
Declaration
Swift
@discardableResult public func validate<S>(statusCode acceptableStatusCodes: S) -> Self where S : Sequence, S.Element == Int
Parameters
acceptableStatusCodes
Sequence
of acceptable response status codes.Return Value
The instance.
-
Validates that the response has a
Content-Type
in the specified sequence.If validation fails, subsequent calls to response handlers will have an associated error.
Declaration
Swift
@discardableResult public func validate<S>(contentType acceptableContentTypes: @escaping @autoclosure () -> S) -> Self where S : Sequence, S.Element == String
Parameters
contentType
The acceptable content types, which may specify wildcard types and/or subtypes.
Return Value
The request.
-
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.
If validation fails, subsequent calls to response handlers will have an associated error.
Declaration
Swift
@discardableResult public func validate() -> Self
Return Value
The request.