Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NetworkOperation{
- var isAPIServerReachable : Bool {
- get{
- return reachability.isReachable
- }
- }
- private var reachability : Reachability
- private var networkOperationQueue : OperationQueue = {
- let queue = OperationQueue()
- queue.maxConcurrentOperationCount = 1
- return queue
- }()
- init() {
- self.reachability = Reachability.init(hostname: “http://myapi.com/v1/“)!
- self.reachability.reachableOnWWAN = false
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(networkStatusChanged),
- name: ReachabilityChangedNotification, object: nil)
- }
- @objc
- func networkStatusChanged(){
- if self.isAPIServerReachable{
- self.networkOperationQueue.isSuspended = false
- } else {
- self.networkOperationQueue.isSuspended = true
- }
- }
- func performNetworkOperation(params: Dictionary<String,Any>,
- completion: @escaping ((Bool, Any?)->())){
- self.enqueueRequest(params: params, completion: completion)
- }
- func enqueueRequest(params: Dictionary<String,Any>,
- completion: @escaping ((Bool, Any?)->())){
- let request = URL.init(string: "<<requestURL>>")!
- self.networkOperationQueue.addOperation({
- Alamofire.request(request, parameters: params).responseJSON{ response in
- switch response.result{
- case .success(let data):
- completion(true, data)
- case .failure(let error):
- completion(false, error)
- }
- }
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment