NSProfile.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // LoopFollow
  2. // NSProfile.swift
  3. // Created by Jonas Björkert on 2024-07-15.
  4. import Foundation
  5. struct NSProfile: Decodable {
  6. struct Store: Decodable {
  7. struct BasalEntry: Decodable {
  8. let value: Double
  9. let time: String
  10. let timeAsSeconds: Double
  11. }
  12. struct SensEntry: Decodable {
  13. let value: Double
  14. let time: String
  15. let timeAsSeconds: Double
  16. }
  17. struct CarbRatioEntry: Decodable {
  18. let value: Double
  19. let time: String
  20. let timeAsSeconds: Double
  21. }
  22. struct TargetEntry: Decodable {
  23. let value: Double
  24. let time: String
  25. let timeAsSeconds: Double
  26. }
  27. let basal: [BasalEntry]
  28. let sens: [SensEntry]
  29. let carbratio: [CarbRatioEntry]
  30. let target_high: [TargetEntry]?
  31. let target_low: [TargetEntry]?
  32. let timezone: String
  33. let units: String
  34. }
  35. let store: [String: Store]
  36. let defaultProfile: String
  37. let units: String
  38. let bundleIdentifier: String?
  39. let isAPNSProduction: Bool?
  40. let deviceToken: String?
  41. let teamID: String?
  42. let expirationDate: 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
  84. case teamID
  85. case expirationDate
  86. }
  87. }