PushMessage.swift 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // LoopFollow
  2. // PushMessage.swift
  3. import Foundation
  4. struct PushMessage: Encodable {
  5. let aps: [String: Int] = ["content-available": 1]
  6. var user: String
  7. var commandType: TRCCommandType
  8. var bolusAmount: Decimal?
  9. var target: Int?
  10. var duration: Int?
  11. var carbs: Int?
  12. var protein: Int?
  13. var fat: Int?
  14. var sharedSecret: String
  15. var timestamp: TimeInterval
  16. var overrideName: String?
  17. var scheduledTime: TimeInterval?
  18. enum CodingKeys: String, CodingKey {
  19. case aps
  20. case user
  21. case commandType = "command_type"
  22. case bolusAmount = "bolus_amount"
  23. case target
  24. case duration
  25. case carbs
  26. case protein
  27. case fat
  28. case sharedSecret = "shared_secret"
  29. case timestamp
  30. case overrideName
  31. case scheduledTime = "scheduled_time"
  32. }
  33. func encode(to encoder: Encoder) throws {
  34. var container = encoder.container(keyedBy: CodingKeys.self)
  35. try container.encode(aps, forKey: .aps)
  36. try container.encode(user, forKey: .user)
  37. try container.encode(commandType.rawValue, forKey: .commandType)
  38. try container.encode(bolusAmount, forKey: .bolusAmount)
  39. try container.encode(target, forKey: .target)
  40. try container.encode(duration, forKey: .duration)
  41. try container.encode(carbs, forKey: .carbs)
  42. try container.encode(protein, forKey: .protein)
  43. try container.encode(fat, forKey: .fat)
  44. try container.encode(sharedSecret, forKey: .sharedSecret)
  45. try container.encode(timestamp, forKey: .timestamp)
  46. try container.encode(overrideName, forKey: .overrideName)
  47. if let scheduledTime = scheduledTime {
  48. try container.encode(scheduledTime, forKey: .scheduledTime)
  49. }
  50. }
  51. }