PersonalAPI.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. }
  15. extension PersonalAPI: OOAPIContextCapable {
  16. var apiContextKey: String {
  17. return "x_organization_assemble_personal"
  18. }
  19. }
  20. extension PersonalAPI: OOAccessTokenAuthorizable {
  21. var shouldAuthorize: Bool {
  22. return true
  23. }
  24. }
  25. extension PersonalAPI: TargetType {
  26. var baseURL: URL {
  27. let model = O2AuthSDK.shared.o2APIServer(context: .x_organization_assemble_personal)
  28. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 80)\(model?.context ?? "")"
  29. return URL(string: baseURLString)!
  30. }
  31. var path: String {
  32. switch self {
  33. case .personInfo:
  34. return "jaxrs/person"
  35. case .updatePersonInfo(_):
  36. return "jaxrs/person"
  37. case .updatePersonIcon(_):
  38. return "jaxrs/person/icon"
  39. }
  40. }
  41. var method: Moya.Method {
  42. switch self {
  43. case .personInfo:
  44. return .get
  45. case .updatePersonInfo(_):
  46. return .put
  47. case .updatePersonIcon(_):
  48. return .put
  49. }
  50. }
  51. var sampleData: Data {
  52. return "".data(using: String.Encoding.utf8)!
  53. }
  54. var task: Task {
  55. switch self {
  56. case .personInfo:
  57. return .requestPlain
  58. case .updatePersonInfo(let person):
  59. return .requestParameters(parameters: person.toJSON() ?? [:], encoding: JSONEncoding.default)
  60. case .updatePersonIcon(let image):
  61. let data = image.pngData()
  62. let formData = MultipartFormData(provider: .data(data!), name: "file",
  63. fileName: "avatar.png", mimeType: "image/png")
  64. return .uploadMultipart([formData])
  65. }
  66. }
  67. var headers: [String : String]? {
  68. return nil
  69. }
  70. }