NetworkManager.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import Combine
  2. import Foundation
  3. import Swinject
  4. protocol NetworkManager {
  5. func fetchGlucose() -> AnyPublisher<[BloodGlucose], Error>
  6. }
  7. final class BaseNetworkManager: NetworkManager, Injectable {
  8. @Injected() private var keychain: Keychain!
  9. private let processQueue = DispatchQueue(label: "BaseNetworkManager.processQueue")
  10. private var nightscoutAPI: NightscoutAPI? {
  11. guard let urlString = keychain.getValue(String.self, forKey: NightscoutConfig.Config.urlKey),
  12. let url = URL(string: urlString),
  13. let secret = keychain.getValue(String.self, forKey: NightscoutConfig.Config.secretKey)
  14. else {
  15. return nil
  16. }
  17. return NightscoutAPI(url: url, secret: secret)
  18. }
  19. init(resolver: Resolver) {
  20. injectServices(resolver)
  21. }
  22. func fetchGlucose() -> AnyPublisher<[BloodGlucose], Error> {
  23. guard let nightscout = nightscoutAPI else {
  24. return Just([]).setFailureType(to: Error.self).eraseToAnyPublisher()
  25. }
  26. return nightscout.fetchLast(288)
  27. }
  28. }