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