Add parser for wetter.de
[rhynodge.git] / src / main / kotlin / net / pterodactylus / rhynodge / webpages / weather / wetterde / WetterDeState.kt
1 package net.pterodactylus.rhynodge.webpages.weather.wetterde
2
3 import com.fasterxml.jackson.annotation.JsonProperty
4 import net.pterodactylus.rhynodge.states.AbstractState
5 import java.time.Instant
6 import java.time.ZoneId.of
7 import java.time.ZonedDateTime
8
9 /**
10  * Contains the state parsed from [wetter.de](https://www.wetter.de/).
11  *
12  * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
13  */
14 class WetterDeState(val dateTime: ZonedDateTime) : AbstractState(true), Iterable<HourState> {
15
16     constructor(@JsonProperty("dateTime") timeMillis: Long) : this(Instant.ofEpochMilli(timeMillis).atZone(of("Europe/Berlin")))
17
18     val hours: List<HourState> = mutableListOf()
19
20     val timeMillis: Long
21         @JsonProperty("dateTime") get() {
22             return dateTime.toInstant().toEpochMilli()
23         }
24
25     override fun iterator(): Iterator<HourState> = hours.iterator()
26
27     operator fun plusAssign(hourState: HourState) {
28         (hours as MutableList).add(hourState)
29     }
30
31     override fun equals(other: Any?): Boolean {
32         if (other !is WetterDeState) {
33             return false
34         }
35         return (dateTime == other.dateTime) and (hours == other.hours)
36     }
37
38 }