OOMoyaProvider.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // OOMoyaProvider.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2017/8/18.
  6. // Copyright © 2017年 zone. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. import O2OA_Auth_SDK
  11. // MARK:- 自定义Provider
  12. public class OOMoyaProvider<Target>: MoyaProvider<Target> where Target: TargetType {
  13. // MARK:- 打印出来的JSON格式化
  14. class func JSONResponseDataFormatter(_ data: Data) -> Data {
  15. do {
  16. let dataAsJSON = try JSONSerialization.jsonObject(with: data)
  17. let prettyData = try JSONSerialization.data(withJSONObject: dataAsJSON, options: .prettyPrinted)
  18. return prettyData
  19. } catch {
  20. return data // fallback to original data if it can't be serialized.
  21. }
  22. }
  23. private let networkActivityPlugin = NetworkActivityPlugin(networkActivityClosure: { change,arg in
  24. switch change {
  25. case .began:
  26. UIApplication.shared.isNetworkActivityIndicatorVisible = true
  27. break
  28. case .ended:
  29. UIApplication.shared.isNetworkActivityIndicatorVisible = false
  30. break
  31. }
  32. })
  33. /// 网络请求状态改变插件
  34. var netPlugin:NetworkActivityPlugin = {
  35. return NetworkActivityPlugin(networkActivityClosure: { change,arg in
  36. switch change {
  37. case .began:
  38. UIApplication.shared.isNetworkActivityIndicatorVisible = true
  39. break
  40. case .ended:
  41. UIApplication.shared.isNetworkActivityIndicatorVisible = false
  42. break
  43. }
  44. })
  45. }()
  46. init() {
  47. super.init(plugins: [NetworkLoggerPlugin(verbose: true, responseDataFormatter: OOMoyaProvider<Target>.JSONResponseDataFormatter), netPlugin, O2AccessTokenPlugin()])
  48. }
  49. }