O2MoyaResult.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // O2MoyaResult.swift
  3. // O2OA_SDK_Framwork
  4. //
  5. // Created by FancyLou on 2018/11/8.
  6. //
  7. import Foundation
  8. import Moya
  9. public enum O2APIError: Error {
  10. case o2ResponseError(String)
  11. case jsonTransformError(String)
  12. case moyaResponseError(Error)
  13. case unknownError(Error)
  14. }
  15. public final class O2MoyaResult<T: IBaseO2ResponseData> {
  16. var model: T?
  17. var error: O2APIError?
  18. init(_ result:Result<Response,MoyaError>) {
  19. switch result {
  20. case .success(let data):
  21. model = data.mapObject(T.self)
  22. if let _ = model {
  23. if model?.isSuccess() == false {
  24. self.error = O2APIError.o2ResponseError(model?.message ?? "")
  25. }
  26. }else {
  27. self.error = O2APIError.jsonTransformError("response:\(data.description)")
  28. }
  29. break
  30. case .failure(let err):
  31. self.error = O2APIError.moyaResponseError(err)
  32. break
  33. }
  34. }
  35. func isResultSuccess() -> Bool {
  36. guard let _ = error else {
  37. return true
  38. }
  39. return false
  40. }
  41. }