OOContactAPI.swift 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //
  2. // OOContactAPI.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2017/11/20.
  6. // Copyright © 2017年 zone. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. import O2OA_Auth_SDK
  11. // MARK: - 所有调用的API
  12. enum OOContactAPI {
  13. //所有顶层单元
  14. case listTop
  15. //所有顶层单元子单元
  16. case listSubDirect(String)
  17. //单元信息
  18. case getUnit(String)
  19. //个人信息(包括部门,群组等)
  20. case getPerson(String)
  21. //查找
  22. case iconByPerson(String)
  23. case unitLike(String)
  24. case groupLike(String)
  25. case personLike(String)
  26. case personListNext(String,Int)
  27. }
  28. // MARK: - 通讯录上下文
  29. extension OOContactAPI:OOAPIContextCapable {
  30. var apiContextKey: String {
  31. return "x_organization_assemble_control"
  32. }
  33. }
  34. // MARK: - 是否需要加入x-token访问头
  35. extension OOContactAPI:OOAccessTokenAuthorizable {
  36. public var shouldAuthorize: Bool {
  37. return true
  38. }
  39. }
  40. // MARK: - 扩展API
  41. extension OOContactAPI:TargetType {
  42. var baseURL: URL {
  43. let model = O2AuthSDK.shared.o2APIServer(context: .x_organization_assemble_control)
  44. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"
  45. return URL(string: baseURLString)!
  46. }
  47. var path: String {
  48. switch self {
  49. case .getPerson(let flag):
  50. return "/jaxrs/person/\(flag.urlEscaped)"
  51. case .getUnit(let unitFlag):
  52. return "/jaxrs/unit/\(unitFlag.urlEscaped)"
  53. case .listSubDirect(let unitFlag):
  54. return "/jaxrs/unit/list/\(unitFlag.urlEscaped)/sub/direct"
  55. case .listTop:
  56. return "/jaxrs/unit/list/top"
  57. case .iconByPerson(let pid):
  58. return "/jaxrs/person/\(pid)/icon"
  59. case .unitLike(_):
  60. return "/jaxrs/unit/list/like"
  61. case .groupLike(_):
  62. return "/jaxrs/group/list/like"
  63. case .personLike(_):
  64. return "/jaxrs/person/list/like"
  65. case .personListNext(let flag, let count):
  66. return "jaxrs/person/list/\(flag)/next/\(count)"
  67. }
  68. }
  69. var method: Moya.Method {
  70. switch self{
  71. case .getPerson(_),.getUnit(_),.listTop,.listSubDirect(_),.iconByPerson(_),.personListNext(_, _):
  72. return .get
  73. case .unitLike(_),.groupLike(_),.personLike(_):
  74. return .put
  75. }
  76. }
  77. var sampleData: Data {
  78. return "".data(using: String.Encoding.utf8)!
  79. }
  80. var task: Task {
  81. switch self{
  82. case .getPerson(_),.getUnit(_),.listTop,.listSubDirect(_),.personListNext(_,_):
  83. return .requestPlain
  84. case .iconByPerson(_):
  85. return .requestPlain
  86. case .groupLike(let searchText):
  87. return .requestParameters(parameters: ["key":searchText], encoding: JSONEncoding.default)
  88. case .unitLike(let searchText):
  89. return .requestParameters(parameters: ["key":searchText], encoding: JSONEncoding.default)
  90. case .personLike(let searchText):
  91. return .requestParameters(parameters: ["key":searchText], encoding: JSONEncoding.default)
  92. }
  93. }
  94. public var headers: [String : String]? {
  95. return nil
  96. }
  97. }