♻️ Convert SavoyTicketsFilter to Kotlin class
[rhynodge.git] / src / main / kotlin / net / pterodactylus / rhynodge / filters / webpages / savoy / SavoyTicketsFilter.kt
diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.kt
new file mode 100644 (file)
index 0000000..10ab93c
--- /dev/null
@@ -0,0 +1,24 @@
+package net.pterodactylus.rhynodge.filters.webpages.savoy
+
+import net.pterodactylus.rhynodge.Filter
+import net.pterodactylus.rhynodge.State
+import net.pterodactylus.rhynodge.states.HtmlState
+import org.apache.log4j.Logger
+
+/**
+ * [Filter] implementation that creates a list of movies running at the
+ * Savoy theatre in Hamburg.
+ */
+class SavoyTicketsFilter : Filter {
+
+       override fun filter(state: State) =
+               requireNotNull(state as? HtmlState) { "state must be HTML" }
+                       .document()
+                       .let(movieExtractor::getMovies)
+                       .also { logger.debug("Parsed Movies: $it") }
+                       .let { MovieState(it, emptySet(), false) }
+
+}
+
+private val logger = Logger.getLogger(SavoyTicketsFilter::class.java)
+private val movieExtractor = MovieExtractor()