PushMessage.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. enum CodingKeys: String, CodingKey {
  23. case aps
  24. case user
  25. case commandType = "command_type"
  26. case bolusAmount = "bolus_amount"
  27. case target
  28. case duration
  29. case carbs
  30. case protein
  31. case fat
  32. case sharedSecret = "shared_secret"
  33. case timestamp
  34. case overrideName
  35. }
  36. func encode(to encoder: Encoder) throws {
  37. var container = encoder.container(keyedBy: CodingKeys.self)
  38. try container.encode(aps, forKey: .aps)
  39. try container.encode(user, forKey: .user)
  40. try container.encode(commandType.rawValue, forKey: .commandType)
  41. try container.encode(bolusAmount, forKey: .bolusAmount)
  42. try container.encode(target, forKey: .target)
  43. try container.encode(duration, forKey: .duration)
  44. try container.encode(carbs, forKey: .carbs)
  45. try container.encode(protein, forKey: .protein)
  46. try container.encode(fat, forKey: .fat)
  47. try container.encode(sharedSecret, forKey: .sharedSecret)
  48. try container.encode(timestamp, forKey: .timestamp)
  49. try container.encode(overrideName, forKey: .overrideName)
  50. }
  51. }