♻️ Convert SavoyTicketsFilter to Kotlin class
[rhynodge.git] / src / main / kotlin / net / pterodactylus / rhynodge / filters / webpages / savoy / SavoyTicketsFilter.kt
1 package net.pterodactylus.rhynodge.filters.webpages.savoy
2
3 import net.pterodactylus.rhynodge.Filter
4 import net.pterodactylus.rhynodge.State
5 import net.pterodactylus.rhynodge.states.HtmlState
6 import org.apache.log4j.Logger
7
8 /**
9  * [Filter] implementation that creates a list of movies running at the
10  * Savoy theatre in Hamburg.
11  */
12 class SavoyTicketsFilter : Filter {
13
14         override fun filter(state: State) =
15                 requireNotNull(state as? HtmlState) { "state must be HTML" }
16                         .document()
17                         .let(movieExtractor::getMovies)
18                         .also { logger.debug("Parsed Movies: $it") }
19                         .let { MovieState(it, emptySet(), false) }
20
21 }
22
23 private val logger = Logger.getLogger(SavoyTicketsFilter::class.java)
24 private val movieExtractor = MovieExtractor()