OAuth2DataLoader
open class OAuth2DataLoader : OAuth2Requestable
A class that makes loading data from a protected endpoint easier.
-
The OAuth2 instance used for OAuth2 access tokvarretrieval.
Declaration
Swift
public let oauth2: OAuth2 -
If set to true, a 403 is treated as a 401. The default is false.
Declaration
Swift
public var alsoIntercept403: Bool -
Designated initializer.
Provide
hostif 301 and 302 redirects should be followed automatically, as long as they appear on the same host.Declaration
Swift
public init(oauth2: OAuth2, host: String? = nil)Parameters
oauth2The OAuth2 instance to use for authorization when loading data.
hostIf given will handle redirects within the same host by way of
OAuth2DataLoaderSessionTaskDelegate
-
Overriding this method: it intercepts
unauthorizedClienterrors, stops and enqueues all calls, starts the authorization and, upon success, resumes all enqueued calls.The callback is easy to use, like so:
perform(request: req) { dataStatusResponse in do { let (data, status) = try dataStatusResponse() // do what you must with `data` as Data and `status` as Int } catch let error { // the request failed because of `error` } }Declaration
Swift
override open func perform(request: URLRequest, callback: @escaping ((OAuth2Response) -> Void))Parameters
requestThe request to execute
callbackThe callback to call when the request completes/fails. Looks terrifying, see above on how to use it
-
This method takes an additional
retryflag, then uses the base implementation ofperform(request:callback:)to perform the given request. It intercepts 401 (and 403, ifalsoIntercept403is true), enqueues the request and performs authorization. During authorization, all requests to be performed are enqueued and they are all dequeued once authorization finishes, either by retrying them on authorization success or by aborting them all with the same error.The callback is easy to use, like so:
perform(request: req) { dataStatusResponse in do { let (data, status) = try dataStatusResponse() // do what you must with `data` as Data and `status` as Int } catch let error { // the request failed because of `error` } }Declaration
Swift
open func perform(request: URLRequest, retry: Bool, callback: @escaping ((OAuth2Response) -> Void))Parameters
requestThe request to execute
retryWhether the request should be retried on 401 (and possibly 403)
callbackThe callback to call when the request completes/fails
-
If not already authorizing, will use its
oauth2instance to start authorization after forgetting any tokens (!).This method will ignore calls while authorization is ongoing, meaning you will only get the callback once per authorization cycle.
Declaration
Swift
open func attemptToAuthorize(callback: @escaping ((OAuth2JSON?, OAuth2Error?) -> Void))Parameters
callbackThe callback passed on from
authorize(callback:). Authorization finishes successfully (auth parameters will be non-nil but may be an empty dict), fails (error will be non-nil) or is canceled (both params and error are nil)
-
Enqueues the given URLRequest and callback. You probably don’t want to use this method yourself.
Declaration
Swift
public func enqueue(request: URLRequest, callback: @escaping ((OAuth2Response) -> Void))Parameters
requestThe URLRequest to enqueue for later execution
callbackThe closure to call when the request has been executed
-
Enqueues the given OAuth2DataRequest. You probably don’t want to use this method yourself.
Declaration
Swift
public func enqueue(request: OAuth2DataRequest)Parameters
requestThe OAuth2DataRequest to enqueue for later execution
-
Dequeue all enqueued requests, applying the given closure to all of them. The queue will be empty by the time the closure is called.
Declaration
Swift
public func dequeueAndApply(closure: ((OAuth2DataRequest) -> Void))Parameters
closureThe closure to apply to each enqueued request
-
Uses
dequeueAndApply()by signing and re-performing all enqueued requests.Declaration
Swift
func retryAll() -
Uses
dequeueAndApply()to all enqueued requests, calling their callback with a response representing the given error.Declaration
Swift
func throwAllAway(with error: OAuth2Error)Parameters
errorThe error with which to finalize all enqueued requests
View on GitHub
Install in Dash
OAuth2DataLoader Class Reference