CommunicateAPI.swift 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // CommunicateAPI.swift
  3. // O2Platform
  4. //
  5. // Created by FancyLou on 2020/6/4.
  6. // Copyright © 2020 zoneland. All rights reserved.
  7. //
  8. import Moya
  9. import O2OA_Auth_SDK
  10. // MARK: - 消息模块
  11. enum CommunicateAPI {
  12. case myConversationList
  13. case msgListByPaging(Int, Int, String)
  14. case sendMsg(IMMessageInfo)
  15. case readConversation(String)
  16. case instantMessageList(Int)
  17. case createConversation(IMConversationInfo)
  18. }
  19. extension CommunicateAPI: OOAPIContextCapable {
  20. var apiContextKey: String {
  21. return "x_message_assemble_communicate"
  22. }
  23. }
  24. // 是否需要xtoken
  25. extension CommunicateAPI: OOAccessTokenAuthorizable {
  26. var shouldAuthorize: Bool {
  27. return true
  28. }
  29. }
  30. extension CommunicateAPI: TargetType {
  31. var baseURL: URL {
  32. let model = O2AuthSDK.shared.centerServerInfo()?.assembles?["x_message_assemble_communicate"]
  33. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"
  34. return URL(string: baseURLString)!
  35. }
  36. var path: String {
  37. switch self {
  38. case .myConversationList:
  39. return "/jaxrs/im/conversation/list/my"
  40. case .msgListByPaging(let page, let size, _):
  41. return "/jaxrs/im/msg/list/\(page)/size/\(size)"
  42. case .sendMsg(_):
  43. return "/jaxrs/im/msg"
  44. case .readConversation(let conversationId):
  45. return "/jaxrs/im/conversation/\(conversationId)/read"
  46. case .instantMessageList(let count):
  47. return "/jaxrs/instant/list/currentperson/noim/count/\(count)/desc"
  48. case .createConversation(_):
  49. return "/jaxrs/im/conversation"
  50. }
  51. }
  52. var method: Moya.Method {
  53. switch self {
  54. case .myConversationList, .instantMessageList(_):
  55. return .get
  56. case .msgListByPaging(_, _, _), .sendMsg(_), .createConversation(_):
  57. return .post
  58. case .readConversation(_):
  59. return .put
  60. }
  61. }
  62. var sampleData: Data {
  63. return "".data(using: String.Encoding.utf8)!
  64. }
  65. var task: Task {
  66. switch self {
  67. case .myConversationList, .instantMessageList(_), .readConversation(_):
  68. return .requestPlain
  69. case .msgListByPaging(_, _, let conversationId):
  70. let form = IMMessageRequestForm()
  71. form.conversationId = conversationId
  72. return .requestParameters(parameters: form.toJSON()!, encoding: JSONEncoding.default)
  73. case .sendMsg(let msg):
  74. return .requestParameters(parameters: msg.toJSON()!, encoding: JSONEncoding.default)
  75. case .createConversation(let conv):
  76. return .requestParameters(parameters: conv.toJSON()!, encoding: JSONEncoding.default)
  77. }
  78. }
  79. var headers: [String : String]? {
  80. return nil
  81. }
  82. }