PersonalAPI.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //
  2. // PersonalAPI.swift
  3. // O2Platform
  4. //
  5. // Created by FancyLou on 2018/11/21.
  6. // Copyright © 2018 zoneland. All rights reserved.
  7. //
  8. import O2OA_Auth_SDK
  9. import Moya
  10. enum PersonalAPI {
  11. case personInfo
  12. case updatePersonInfo(O2PersonInfo)
  13. case updatePersonIcon(UIImage)
  14. case meetingConfig
  15. }
  16. extension PersonalAPI: OOAPIContextCapable {
  17. var apiContextKey: String {
  18. return "x_organization_assemble_personal"
  19. }
  20. }
  21. extension PersonalAPI: OOAccessTokenAuthorizable {
  22. var shouldAuthorize: Bool {
  23. return true
  24. }
  25. }
  26. extension PersonalAPI: TargetType {
  27. var baseURL: URL {
  28. let model = O2AuthSDK.shared.o2APIServer(context: .x_organization_assemble_personal)
  29. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 80)\(model?.context ?? "")"
  30. return URL(string: baseURLString)!
  31. }
  32. var path: String {
  33. switch self {
  34. case .personInfo:
  35. return "jaxrs/person"
  36. case .updatePersonInfo(_):
  37. return "jaxrs/person"
  38. case .updatePersonIcon(_):
  39. return "jaxrs/person/icon"
  40. case .meetingConfig:
  41. return "jaxrs/definition/meetingConfig"
  42. }
  43. }
  44. var method: Moya.Method {
  45. switch self {
  46. case .personInfo, .meetingConfig:
  47. return .get
  48. case .updatePersonInfo(_), .updatePersonIcon(_):
  49. return .put
  50. }
  51. }
  52. var sampleData: Data {
  53. return "".data(using: String.Encoding.utf8)!
  54. }
  55. var task: Task {
  56. switch self {
  57. case .personInfo, .meetingConfig:
  58. return .requestPlain
  59. case .updatePersonInfo(let person):
  60. return .requestParameters(parameters: person.toJSON() ?? [:], encoding: JSONEncoding.default)
  61. case .updatePersonIcon(let image):
  62. let data = image.pngData()
  63. let formData = MultipartFormData(provider: .data(data!), name: "file",
  64. fileName: "avatar.png", mimeType: "image/png")
  65. return .uploadMultipart([formData])
  66. }
  67. }
  68. var headers: [String : String]? {
  69. return nil
  70. }
  71. }