ServerDataMapper.kt 1.0 KB

123456789101112131415161718192021222324252627
  1. package com.ted.weather.data.server
  2. import com.ted.weather.domain.model.ForecastList
  3. import java.util.*
  4. import java.util.concurrent.TimeUnit
  5. import com.ted.weather.domain.model.Forecast as ModelForecast
  6. class ServerDataMapper {
  7. fun convertToDomain(zipCode: Long, forecast: ForecastResult) = with(forecast) {
  8. ForecastList(zipCode, city.name, city.country, convertForecastListToDomain(list))
  9. }
  10. private fun convertForecastListToDomain(list: List<Forecast>): List<ModelForecast> {
  11. return list.mapIndexed { i, forecast ->
  12. val dt = Calendar.getInstance().timeInMillis + TimeUnit.DAYS.toMillis(i.toLong())
  13. convertForecastItemToDomain(forecast.copy(dt = dt))
  14. }
  15. }
  16. private fun convertForecastItemToDomain(forecast: Forecast) = with(forecast) {
  17. ModelForecast(-1, dt, weather[0].description, temp.max.toInt(), temp.min.toInt(),
  18. generateIconUrl(weather[0].icon))
  19. }
  20. private fun generateIconUrl(iconCode: String) = "http://openweathermap.org/img/w/$iconCode.png"
  21. }