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