OOApplicationAPI.swift 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // OOApplicationAPI.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2018/3/12.
  6. // Copyright © 2018年 zone. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. import O2OA_Auth_SDK
  11. // MARK:- 所有调用的API枚举
  12. enum OOApplicationAPI {
  13. case applicationList
  14. case applicationOnlyList
  15. case applicationItem(String) // 更加应用获取流程列表
  16. case applicationItemWithFilter(String) //新版 根据应用获取流程列表 有移动端过滤 仅pc的流程不出现在这里
  17. case availableIdentityWithProcess(String)
  18. case startProcess(String, String, String) // processId identity title
  19. case icon(String)
  20. }
  21. // MARK:- 上下文实现
  22. extension OOApplicationAPI:OOAPIContextCapable {
  23. var apiContextKey: String {
  24. return "x_processplatform_assemble_surface"
  25. }
  26. }
  27. // MARK: - 是否需要加入x-token访问头
  28. extension OOApplicationAPI:OOAccessTokenAuthorizable {
  29. public var shouldAuthorize: Bool {
  30. return true
  31. }
  32. }
  33. extension OOApplicationAPI:TargetType {
  34. var baseURL: URL {
  35. let model = O2AuthSDK.shared.o2APIServer(context: .x_processplatform_assemble_surface)
  36. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"
  37. return URL(string: baseURLString)!
  38. }
  39. var path: String {
  40. switch self {
  41. case .applicationList:
  42. return "/jaxrs/application/list/complex"
  43. case .applicationOnlyList:
  44. return "/jaxrs/application/list"
  45. case .applicationItem(let appId):
  46. return "/jaxrs/process/list/application/\(appId)"
  47. case .applicationItemWithFilter(let appId):
  48. return "/jaxrs/process/list/application/\(appId)/filter"
  49. case .availableIdentityWithProcess(let processId):
  50. return "/jaxrs/process/list/available/identity/process/\(processId)"
  51. case .startProcess(let processId, _, _):
  52. return "/jaxrs/work/process/\(processId)"
  53. case .icon(let applicationId):
  54. return "/jaxrs/application/\(applicationId)/icon"
  55. }
  56. }
  57. var method: Moya.Method {
  58. switch self {
  59. case .startProcess(_, _, _), .applicationItemWithFilter(_):
  60. return .post
  61. default:
  62. return .get
  63. }
  64. }
  65. var sampleData: Data {
  66. return "".data(using: String.Encoding.utf8)!
  67. }
  68. var task: Task {
  69. switch self {
  70. case .startProcess(_, let identity, let title):
  71. return .requestParameters(parameters: ["identity": identity, "title": title], encoding: JSONEncoding.default)
  72. case .applicationItemWithFilter(_):
  73. let filter = O2ProcessFilter()
  74. filter.startableTerminal = "mobile" //移动端过滤 仅pc的流程不出现在这里
  75. return .requestParameters(parameters: filter.toJSON()!, encoding: JSONEncoding.default)
  76. default:
  77. return .requestPlain
  78. }
  79. }
  80. var headers: [String : String]? {
  81. return nil
  82. }
  83. }