Skip to content

Commit 6668e15

Browse files
committed
feat: flood api in global OpenMeteo class
1 parent ae63d39 commit 6668e15

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

lib/src/main/kotlin/com/openmeteo/api/OpenMeteo.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import com.openmeteo.api.dwd.DwdDaily
2121
import com.openmeteo.api.ecmwf.Ecmwf
2222
import com.openmeteo.api.ecmwf.EcmwfHourly
2323
import com.openmeteo.api.elevation.Elevation
24+
import com.openmeteo.api.flood.Flood
25+
import com.openmeteo.api.flood.FloodDaily
2426
import com.openmeteo.api.forecast.Forecast
2527
import com.openmeteo.api.forecast.ForecastDaily
2628
import 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

Comments
 (0)