Created
July 27, 2019 11:19
-
-
Save kinisoftware/f07ab14e83f153f9f1bb059da7df0af7 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| class MoviesGetter(gson: Gson) { | |
| private val theMovieDBService = TheMovieDBService(gson) | |
| fun getUpcomings(locale: String, releaseDate: String) = theMovieDBService.getUpcomings(locale) | |
| .filter { it.isReleasedOnDate(releaseDate) } | |
| .map { it.getTitle() } | |
| .getResponse() | |
| fun getNowPlayingMovies(locale: String) = theMovieDBService.getNowPlayingMovies(locale) | |
| .map { it.getTitle() } | |
| .getResponse() | |
| private fun Movie.getTitle() = | |
| when { | |
| originalTitle == title && originalLanguage != "es" -> { | |
| val lang = ssmlLangByMovieOriginalLanguage[originalLanguage] | |
| when { | |
| lang != null && lang.isNotBlank() -> "<lang xml:lang=$lang>${originalTitle.sanitaze()}</lang>" | |
| else -> { | |
| println("Unhandled original language $originalLanguage") | |
| title.sanitaze() | |
| } | |
| } | |
| } | |
| else -> title.sanitaze() | |
| } | |
| private fun String.sanitaze() = replace("&", "&") | |
| private fun List<String>.getResponse() = | |
| when { | |
| isNotEmpty() -> take(size - 1).joinToString(", ").plus(" y ${last()}.") | |
| else -> "" | |
| } | |
| private fun Movie.isReleasedOnDate(dateValue: String) = | |
| getWeekFormatStyle(releaseDate) == dateValue || getMonthFormatStyle(releaseDate) == dateValue | |
| private fun getWeekFormatStyle(releaseDate: String): String { | |
| val localDate = LocalDate.parse(releaseDate) | |
| val weekFields = WeekFields.of(Locale.getDefault()) | |
| return localDate.year.toString() + "-W" + localDate.get(weekFields.weekOfWeekBasedYear()) | |
| } | |
| private fun getMonthFormatStyle(releaseDate: String): String { | |
| val localDate = LocalDate.parse(releaseDate) | |
| return if (localDate.monthValue < 10) | |
| localDate.year.toString() + "-0" + localDate.monthValue | |
| else | |
| localDate.year.toString() + "-" + localDate.monthValue | |
| } | |
| companion object { | |
| private val ssmlLangByMovieOriginalLanguage = mapOf( | |
| "en" to "\"en-US\"", | |
| "fr" to "\"fr-FR\"" | |
| ) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment