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

DataRequest

mattt edited this page Sep 18, 2020 · 4 revisions

DataRequest

Request subclass which handles in-memory Data download using URLSessionDataTask.

public class DataRequest:​ Request

Inheritance

Request

Nested Type Aliases

Validation

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

public typealias Validation = (URLRequest?, HTTPURLResponse, Data?) -> ValidationResult

Properties

convertible

URLRequestConvertible value used to create URLRequests for this instance.

let convertible:​ URLRequestConvertible

data

Data read from the server so far.

var data:​ Data?

Methods

validate(_:​)

Validates the request, using the specified closure.

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

Parameters

  • validation:​ Validation closure used 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 (AFDataResponse<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.

response(queue:​responseSerializer:​completionHandler:​)

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

@discardableResult public func response<Serializer:​ DataResponseSerializerProtocol>(queue:​ DispatchQueue = .main, responseSerializer:​ Serializer, completionHandler:​ @escaping (AFDataResponse<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.
  • 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 (AFDataResponse<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 (AFDataResponse<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 (AFDataResponse<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.

responseDecodable(of:​queue:​decoder:​completionHandler:​)

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

@discardableResult public func responseDecodable<T:​ Decodable>(of type:​ T.Type = T.self, queue:​ DispatchQueue = .main, decoder:​ DataDecoder = JSONDecoder(), completionHandler:​ @escaping (AFDataResponse<T>) -> Void) -> Self

Parameters

  • type:​ Decodable type to decode from response data.
  • queue:​ The queue on which the completion handler is dispatched. .main by default.
  • decoder:​ DataDecoder to use to decode the response. JSONDecoder() 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