NSProfile.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // NSProfile.swift
  2. // LoopFollow
  3. // Created by Jonas Björkert on 2024-07-12.
  4. // Copyright © 2024 Jon Fawcett. All rights reserved.
  5. import Foundation
  6. struct NSProfile: Decodable {
  7. struct Store: Decodable {
  8. struct BasalEntry: Decodable {
  9. let value: Double
  10. let time: String
  11. let timeAsSeconds: Double
  12. }
  13. struct SensEntry: Decodable {
  14. let value: Double
  15. let time: String
  16. let timeAsSeconds: Double
  17. }
  18. struct CarbRatioEntry: Decodable {
  19. let value: Double
  20. let time: String
  21. let timeAsSeconds: Double
  22. }
  23. struct TargetEntry: Decodable {
  24. let value: Double
  25. let time: String
  26. let timeAsSeconds: Double
  27. }
  28. let basal: [BasalEntry]
  29. let sens: [SensEntry]
  30. let carbratio: [CarbRatioEntry]
  31. let target_high: [TargetEntry]?
  32. let target_low: [TargetEntry]?
  33. let timezone: String
  34. let units: String
  35. }
  36. let store: [String: Store]
  37. let defaultProfile: String
  38. let units: String
  39. let bundleIdentifier: String?
  40. let isAPNSProduction: Bool?
  41. let deviceToken: String?
  42. let teamID: String?
  43. struct TrioOverrideEntry: Decodable {
  44. let name: String
  45. let duration: Double?
  46. let percentage: Double?
  47. let target: Double?
  48. }
  49. struct LoopSettings: Decodable {
  50. struct LoopOverridePreset: Decodable {
  51. let name: String
  52. let duration: Int?
  53. let targetRange: [Double]?
  54. let insulinNeedsScaleFactor: Double?
  55. let symbol: String?
  56. }
  57. let deviceToken: String?
  58. let bundleIdentifier: String?
  59. let minimumBGGuard: Double?
  60. let maximumBolus: Double?
  61. let maximumBasalRatePerHour: Double?
  62. let scheduleOverride: ScheduleOverride?
  63. let dosingStrategy: String?
  64. let overridePresets: [LoopOverridePreset]?
  65. let dosingEnabled: Bool?
  66. struct ScheduleOverride: Decodable {
  67. let symbol: String?
  68. let duration: Int?
  69. let insulinNeedsScaleFactor: Double?
  70. let name: String?
  71. }
  72. }
  73. let trioOverrides: [TrioOverrideEntry]?
  74. let loopSettings: LoopSettings?
  75. enum CodingKeys: String, CodingKey {
  76. case store
  77. case defaultProfile
  78. case units
  79. case bundleIdentifier
  80. case isAPNSProduction
  81. case deviceToken
  82. case trioOverrides = "overridePresets"
  83. case loopSettings = "loopSettings"
  84. case teamID
  85. }
  86. }