Skip to content

Instantly share code, notes, and snippets.

@tilltue
Created June 20, 2018 15:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tilltue/ed49f24ce0a7f49b99090e4e7ecf6873 to your computer and use it in GitHub Desktop.
Save tilltue/ed49f24ce0a7f49b99090e4e7ecf6873 to your computer and use it in GitHub Desktop.
currency api model
enum Api {
static func getCurrencyExchangeRate(baseCurrency: String = "EUR", firebaseSaveBlock: ((Data) -> Void)? = nil) -> Single<[CurrencyExchangeRate]> {
return Service.shared.container
.resolve(MoyaProvider<CurrencyExchangeRateRemoteApi>.self)!.singleRequest(.exchangeRate(baseCurrency: baseCurrency))
.observeOn(Service.shared.container.resolve(SerialDispatchQueueScheduler.self, name: Service.RegisterationName.cacheSave.rawValue)!)
.do(onSuccess: { firebaseSaveBlock?($0) })
.map({ data -> [CurrencyExchangeRate] in
let exchangeRate = try JSONDecoder().decode(ExchangeRate.self, from: data)
return exchangeRate.convertCurrencyExchangeRate()
}).do(onSuccess: { rates in
CurrencyExchangeRateLocalApi.saveExchangeRate(rates: rates)
}).observeOn(MainScheduler.instance)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment