KeyboardNetworkManager.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // KeyboardNetworkManager.swift
  3. // AiKeyboard
  4. //
  5. // Created by Destiny on 2025/4/28.
  6. //
  7. import Moya
  8. import Moya_ObjectMapper
  9. let KeyboardNetworkProvider = MoyaProvider<KeyboardClientService>(plugins: [networkLoggerPlugin])
  10. let networkLoggerPlugin = NetworkLoggerPlugin()
  11. enum KeyboardClientService {
  12. case character_list(params: [String: Any])
  13. case keyboard_list(params: [String: Any])
  14. case prologue_list(params: [String: Any])
  15. case keyboard_choose(params: [String: Any])
  16. case chat_super_reply(params: [String: Any])
  17. case chat_super_speak(params: [String: Any])
  18. case chat_super_prologue(params: [String: Any])
  19. }
  20. extension KeyboardClientService: TargetType {
  21. var baseURL: URL {
  22. let baseUrlStr = KeyboardApi.getBaseUrl()
  23. return URL(string: baseUrlStr)!
  24. }
  25. var path: String {
  26. switch self {
  27. case .character_list: return KeyboardApi.character_list
  28. case .keyboard_list: return KeyboardApi.keyboard_list
  29. case .prologue_list: return KeyboardApi.prologue_list
  30. case .keyboard_choose: return KeyboardApi.keyboard_choose
  31. case .chat_super_reply: return KeyboardApi.chat_super_reply
  32. case .chat_super_speak: return KeyboardApi.chat_super_speak
  33. case .chat_super_prologue: return KeyboardApi.chat_super_prologue
  34. }
  35. }
  36. var method: Moya.Method {
  37. return .post
  38. }
  39. var sampleData: Data {
  40. return "".data(using: String.Encoding.utf8)!
  41. }
  42. var task: Moya.Task {
  43. var parameters: [String: Any] = KeyboardApi.params
  44. switch self {
  45. case .character_list(let params):
  46. parameters.merge(params) { (current, _) in current }
  47. case .keyboard_list(let params):
  48. parameters.merge(params) { (current, _) in current }
  49. case .prologue_list(let params):
  50. parameters.merge(params) { (current, _) in current }
  51. case .keyboard_choose(let params):
  52. parameters.merge(params) { (current, _) in current }
  53. case .chat_super_reply(let params):
  54. parameters.merge(params) { (current, _) in current }
  55. case .chat_super_speak(let params):
  56. parameters.merge(params) { (current, _) in current }
  57. case .chat_super_prologue(let params):
  58. parameters.merge(params) { (current, _) in current }
  59. }
  60. debugPrint(parameters)
  61. return Task.requestParameters(parameters:parameters, encoding: JSONEncoding.default)
  62. }
  63. var headers: [String : String]? {
  64. return ["Content-type": "application/json"]
  65. }
  66. }
  67. struct KeyboardNetworkManager {
  68. typealias completeCallback = ((Response) -> (Void))
  69. typealias failCallback = ((Int, String) -> (Void))
  70. static func request(_ target: KeyboardClientService, success: @escaping completeCallback, fail: @escaping failCallback){
  71. KeyboardNetworkProvider.request(target) { result in
  72. //隐藏hud
  73. switch result {
  74. case let .success(response):
  75. if response.statusCode == 200 {
  76. if let responseData = try? response.mapObject(KeyboardBaseResponse.self){
  77. if responseData.code == 0 {
  78. success(response)
  79. } else {
  80. fail(responseData.code, responseData.msg ?? "")
  81. if responseData.code == 1006 {
  82. KeyboardApi.updateAuthToken(authToken: "")
  83. }
  84. }
  85. } else {
  86. fail(500, "解析失败")
  87. }
  88. } else {
  89. // fail(response.statusCode, response.toJSON(modelKey: "msg").stringValue)
  90. }
  91. #if DEBUG
  92. if let json = try? response.mapJSON() {
  93. print("data:\(json)")
  94. }
  95. #endif
  96. break
  97. case let .failure(error):
  98. fail(error.errorCode, "网络错误,请检查后重试")
  99. //网络连接失败,提示用户
  100. // UIApplication.keyWindow?.toast(text: "网络错误,请检查后重试")
  101. break
  102. }
  103. }
  104. }
  105. }