@@ -21,6 +21,8 @@ import com.openmeteo.api.dwd.DwdDaily
2121import com.openmeteo.api.ecmwf.Ecmwf
2222import com.openmeteo.api.ecmwf.EcmwfHourly
2323import com.openmeteo.api.elevation.Elevation
24+ import com.openmeteo.api.flood.Flood
25+ import com.openmeteo.api.flood.FloodDaily
2426import com.openmeteo.api.forecast.Forecast
2527import com.openmeteo.api.forecast.ForecastDaily
2628import com.openmeteo.api.forecast.ForecastHourly
@@ -66,6 +68,7 @@ class OpenMeteo(
6668 val dwd : Endpoint = Endpoint (Dwd .context),
6769 val ecmwf : Endpoint = Endpoint (Ecmwf .context),
6870 val elevation : Endpoint = Endpoint (Elevation .context),
71+ val flood : Endpoint = Endpoint (Flood .context),
6972 val forecast : Endpoint = Endpoint (Forecast .context),
7073 val geocodingGet : Endpoint = Endpoint (GeocodingGet .context),
7174 val geocodingSearch : Endpoint = Endpoint (GeocodingSearch .context),
@@ -96,6 +99,9 @@ class OpenMeteo(
9699 operator fun invoke (query : Elevation .Query ) =
97100 endpoints.elevation.query<Elevation .Response >(query)
98101
102+ operator fun invoke (query : Flood .Query ) =
103+ endpoints.flood.query<Flood .Response >(query)
104+
99105 operator fun invoke (query : Forecast .Query ) =
100106 endpoints.forecast.query<Forecast .Response >(query)
101107
@@ -177,6 +183,16 @@ class OpenMeteo(
177183 arrayOf(this.latitude to this.longitude),
178184 ) = invoke(Elevation .Query (* coordinates))
179185
186+ fun flood (
187+ daily : Iterable <FloodDaily >? = null,
188+ startDate : Date ? = null,
189+ endDate : Date ? = null,
190+ latitude : Float = this.latitude,
191+ longitude : Float = this.longitude,
192+ ) = invoke(
193+ Flood .Query (latitude, longitude, daily, startDate, endDate)
194+ )
195+
180196 fun forecast (
181197 hourly : Iterable <ForecastHourly >? = null,
182198 daily : Iterable <ForecastDaily >? = null,
@@ -370,6 +386,13 @@ class OpenMeteo(
370386 ).getOrThrow()
371387 }
372388
389+ val floodDaily = separate<FloodDaily >(daily)
390+ val floodResponse = floodDaily?.let {
391+ flood(
392+ floodDaily, startDate, endDate, latitude, longitude
393+ ).getOrThrow()
394+ }
395+
373396 val forecastHourly = separate<ForecastHourly >(hourly)
374397 val forecastDaily = separate<ForecastDaily >(daily)
375398 // if both are null return null, else return hourly *or* daily
@@ -433,6 +456,7 @@ class OpenMeteo(
433456
434457 val dailyResponses: List <ResponseDaily > = listOfNotNull(
435458 dwdResponse,
459+ floodResponse,
436460 forecastResponse,
437461 gfsResponse,
438462 historicalResponse,
0 commit comments