RoomControlApi.swift 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // RoomControlApi.swift
  3. // fiveConstant
  4. //
  5. // Created by 李建 on 2023/2/14.
  6. //
  7. import Foundation
  8. import Moya
  9. import SwiftyUserDefaults
  10. enum RoomControlApi {
  11. case power(data: PowerControlReq)
  12. case fanSpeed(data: FanSpeedControlReq)
  13. case temp(data: TempControlReq)
  14. case mode(data: ModeControlReq)
  15. case timer
  16. }
  17. extension RoomControlApi: TargetType {
  18. var baseURL: URL {
  19. return URL(string: BASE_URL)!
  20. }
  21. var path: String {
  22. switch self {
  23. case .power:
  24. return "/api/v1/control/power"
  25. case .mode:
  26. return "/api/v1/control/mode"
  27. case .temp:
  28. return "/api/v1/control/temp"
  29. case .fanSpeed:
  30. return "/api/v1/control/speed"
  31. case .timer:
  32. return "/api/v1/control/timer"
  33. }
  34. }
  35. var method: Moya.Method {
  36. return .post
  37. }
  38. var task: Moya.Task {
  39. switch self {
  40. case .power(let data):
  41. return .requestJSONEncodable(data)
  42. case .mode(let data):
  43. return .requestJSONEncodable(data)
  44. case .fanSpeed(let data):
  45. return .requestJSONEncodable(data)
  46. case .temp(let data):
  47. return .requestJSONEncodable(data)
  48. default:
  49. return .requestPlain
  50. }
  51. }
  52. var headers: [String : String]? {
  53. return ["Authorization": "Bearer \(Defaults[\.token] ?? "")"]
  54. }
  55. }