InsulinSensitivities.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import Foundation
  2. struct InsulinSensitivities: JSON {
  3. let units: GlucoseUnits
  4. let userPrefferedUnits: GlucoseUnits
  5. let sensitivities: [InsulinSensitivityEntry]
  6. }
  7. extension InsulinSensitivities {
  8. private enum CodingKeys: String, CodingKey {
  9. case units
  10. case userPrefferedUnits = "user_preferred_units"
  11. case sensitivities
  12. }
  13. }
  14. struct InsulinSensitivityEntry: JSON {
  15. let sensitivity: Decimal
  16. let offset: Int
  17. let start: String
  18. }
  19. extension InsulinSensitivityEntry {
  20. private enum CodingKeys: String, CodingKey {
  21. case sensitivity
  22. case offset
  23. case start
  24. }
  25. init(from decoder: Decoder) throws {
  26. let container = try decoder.container(keyedBy: CodingKeys.self)
  27. let sensitivity = try container.decode(Double.self, forKey: .sensitivity).decimal ?? .zero
  28. let start = try container.decode(String.self, forKey: .start)
  29. let offset = try container.decode(Int.self, forKey: .offset)
  30. self = InsulinSensitivityEntry(sensitivity: sensitivity, offset: offset, start: start)
  31. }
  32. }