CommunicateAPI.swift 2.1 KB

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