Files
Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift
2019-05-15 11:01:42 +03:00

31 lines
1.1 KiB
Swift

import Foundation
/// Network activity change notification type.
public enum NetworkActivityChangeType {
case began, ended
}
/// Notify a request's network activity changes (request begins or ends).
public final class NetworkActivityPlugin: PluginType {
public typealias NetworkActivityClosure = (_ change: NetworkActivityChangeType, _ target: TargetType) -> Void
let networkActivityClosure: NetworkActivityClosure
/// Initializes a NetworkActivityPlugin.
public init(networkActivityClosure: @escaping NetworkActivityClosure) {
self.networkActivityClosure = networkActivityClosure
}
// MARK: Plugin
/// Called by the provider as soon as the request is about to start
public func willSend(_ request: RequestType, target: TargetType) {
networkActivityClosure(.began, target)
}
/// Called by the provider as soon as a response arrives, even if the request is canceled.
public func didReceive(_ result: Result<Moya.Response, MoyaError>, target: TargetType) {
networkActivityClosure(.ended, target)
}
}