PushMessage.swift 1.9 KB

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