CommunicateAPI.swift 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. }
  18. extension CommunicateAPI: OOAPIContextCapable {
  19. var apiContextKey: String {
  20. return "x_message_assemble_communicate"
  21. }
  22. }
  23. // 是否需要xtoken
  24. extension CommunicateAPI: OOAccessTokenAuthorizable {
  25. var shouldAuthorize: Bool {
  26. return true
  27. }
  28. }
  29. extension CommunicateAPI: TargetType {
  30. var baseURL: URL {
  31. let model = O2AuthSDK.shared.centerServerInfo()?.assembles?["x_message_assemble_communicate"]
  32. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"
  33. return URL(string: baseURLString)!
  34. }
  35. var path: String {
  36. switch self {
  37. case .myConversationList:
  38. return "/jaxrs/im/conversation/list/my"
  39. case .msgListByPaging(let page, let size, _):
  40. return "/jaxrs/im/msg/list/\(page)/size/\(size)"
  41. case .sendMsg(_):
  42. return "/jaxrs/im/msg"
  43. case .readConversation(let conversationId):
  44. return "/jaxrs/im/conversation/\(conversationId)/read"
  45. case .instantMessageList(let count):
  46. return "/jaxrs/instant/list/currentperson/noim/count/\(count)/desc"
  47. }
  48. }
  49. var method: Moya.Method {
  50. switch self {
  51. case .myConversationList, .instantMessageList(_):
  52. return .get
  53. case .msgListByPaging(_, _, _), .sendMsg(_):
  54. return .post
  55. case .readConversation(_):
  56. return .put
  57. }
  58. }
  59. var sampleData: Data {
  60. return "".data(using: String.Encoding.utf8)!
  61. }
  62. var task: Task {
  63. switch self {
  64. case .myConversationList, .instantMessageList(_), .readConversation(_):
  65. return .requestPlain
  66. case .msgListByPaging(_, _, let conversationId):
  67. let form = IMMessageRequestForm()
  68. form.conversationId = conversationId
  69. return .requestParameters(parameters: form.toJSON()!, encoding: JSONEncoding.default)
  70. case .sendMsg(let msg):
  71. return .requestParameters(parameters: msg.toJSON()!, encoding: JSONEncoding.default)
  72. }
  73. }
  74. var headers: [String : String]? {
  75. return nil
  76. }
  77. }