Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. func request(_ route: EndPoint) -> Promise<Data> {
  2. return Promise { seal in
  3. do {
  4. let request = try self.buildRequest(from: route)
  5. task = session.dataTask(with: request) { data, response, error in
  6. Logger.instance?.log(category: .network, message: """
  7. URL: \(request.url?.absoluteString ?? "-none")
  8. Method: \(request.httpMethod ?? "-none")
  9. Body: \((try? JSONSerialization.jsonObject(with: request.httpBody ?? Data(), options: [])) ?? "-none")
  10. Data: \((try? JSONSerialization.jsonObject(with: data ?? Data(), options: [])) ?? "-none")
  11. Response code: \(String((response as? HTTPURLResponse)?.statusCode ?? -1234))
  12. """)
  13.  
  14. if let err = error {
  15. let nserror = err as NSError
  16. var netResponse: NetworkErrors
  17. switch nserror.code {
  18. case NSURLErrorTimedOut:
  19. netResponse = .timeout
  20. case NSURLErrorNotConnectedToInternet:
  21. netResponse = .networkConnection
  22. default:
  23. netResponse = .unknow
  24. }
  25. return seal.reject(netResponse)
  26. }
  27. if let resp = response as? HTTPURLResponse,
  28. let responseError = self.handleNetworkResponse(resp, data: data),
  29. responseError != .success {
  30. switch responseError {
  31. case .authenticationError:
  32. NotificationCenter.default.post(name: .needUserRelogin, object: nil)
  33. seal.reject(responseError)
  34. case .badRequest(let additionalData):
  35. guard let code = additionalData?["code"] as? String, let err = self.generateError(for: code) else { seal.reject(responseError); return }
  36. seal.reject(err)
  37. default:
  38. seal.reject(responseError)
  39. }
  40. }
  41. guard let responseData = data else {
  42. seal.reject(NetworkErrors.noData)
  43. return
  44. }
  45. seal.fulfill(responseData)
  46. }
  47. } catch {
  48. seal.reject(error)
  49. }
  50. task?.resume()
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement