O2DesktopAPI.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // O2DesktopAPI.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2017/12/29.
  6. // Copyright © 2017年 zone. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. import O2OA_Auth_SDK
  11. // MARK:- 所有调用的API枚举
  12. enum O2DesktopAPI {
  13. case todoItemDetail(String)
  14. case todoedItemDetail(String)
  15. case bbsItemDetail(String)
  16. case cmsItemDetail(String)
  17. case appItemDetail(String)
  18. }
  19. // MARK:- 上下文实现
  20. extension O2DesktopAPI:OOAPIContextCapable {
  21. var apiContextKey: String {
  22. return "x_desktop"
  23. }
  24. }
  25. // MARK: - 是否需要加入x-token访问头
  26. extension O2DesktopAPI:OOAccessTokenAuthorizable {
  27. public var shouldAuthorize: Bool {
  28. return true
  29. }
  30. }
  31. extension O2DesktopAPI:TargetType {
  32. var baseURL: URL {
  33. let model = O2AuthSDK.shared.centerServerInfo()?.webServer
  34. let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 80)/\(apiContextKey)"
  35. return URL(string: baseURLString)!
  36. }
  37. var path: String {
  38. switch self {
  39. case .todoItemDetail(let workid):
  40. return "/workmobilewithaction.html?workid=\(workid)&\(String.randomString(length: 6))"
  41. case .todoedItemDetail(let workCompletedId):
  42. return "/workmobilewithaction.html?workcompletedid=\(workCompletedId)&\(String.randomString(length: 6))"
  43. case .bbsItemDetail(let subjectId):
  44. return "/forumdocMobile.html?id=\(subjectId)&\(String.randomString(length: 6))"
  45. case .cmsItemDetail(let documentId):
  46. return "/cmsdocMobile.html?id=\(documentId)&\(String.randomString(length: 6))"
  47. case .appItemDetail(let status):
  48. return "/appMobile.html?app=portal.Portal&status=\(status)&\(String.randomString(length: 6))"
  49. }
  50. }
  51. var method: Moya.Method {
  52. return .get
  53. }
  54. var sampleData: Data {
  55. return "".data(using: String.Encoding.utf8)!
  56. }
  57. var task: Task {
  58. return .requestPlain
  59. }
  60. var headers: [String : String]? {
  61. return nil
  62. }
  63. func getCompleteURL() -> URL {
  64. return URL(string:baseURL.absoluteString+path)!
  65. }
  66. }