Created
June 20, 2018 15:39
-
-
Save tilltue/ed49f24ce0a7f49b99090e4e7ecf6873 to your computer and use it in GitHub Desktop.
currency api model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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