pau-riquelme

Untitled

Jan 29th, 2018
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.42 KB | None | 0 0
  1. class NetworkOperation{
  2.     var isAPIServerReachable : Bool {
  3.         get{
  4.             return reachability.isReachable
  5.         }
  6.     }
  7.     private var reachability : Reachability
  8.     private var networkOperationQueue : OperationQueue = {
  9.         let queue = OperationQueue()
  10.         queue.maxConcurrentOperationCount = 1
  11.         return queue
  12.     }()
  13.  
  14.     init() {
  15.         self.reachability = Reachability.init(hostname: “http://myapi.com/v1/“)!
  16.         self.reachability.reachableOnWWAN = false
  17.  
  18.         NotificationCenter.default.addObserver(
  19.             self,
  20.             selector: #selector(networkStatusChanged),
  21.             name: ReachabilityChangedNotification, object: nil)
  22.     }
  23.  
  24.     @objc
  25.     func networkStatusChanged(){
  26.         if self.isAPIServerReachable{
  27.             self.networkOperationQueue.isSuspended = false
  28.         } else {
  29.             self.networkOperationQueue.isSuspended = true
  30.         }
  31.     }
  32.    
  33.     func performNetworkOperation(params: Dictionary<String,Any>,
  34.                                  completion: @escaping ((Bool, Any?)->())){
  35.         self.enqueueRequest(params: params, completion: completion)
  36.     }
  37.  
  38.     func enqueueRequest(params: Dictionary<String,Any>,
  39.                         completion: @escaping ((Bool, Any?)->())){
  40.         let request = URL.init(string: "<<requestURL>>")!
  41.         self.networkOperationQueue.addOperation({
  42.             Alamofire.request(request, parameters: params).responseJSON{ response in
  43.                 switch response.result{
  44.                     case .success(let data):
  45.                         completion(true, data)
  46.                     case .failure(let error):
  47.                         completion(false, error)
  48.                 }
  49.             }
  50.         })
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment