Skip to content

Commit 2bebd92

Browse files
committed
feat: jma api package
1 parent 35034de commit 2bebd92

3 files changed

Lines changed: 319 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.openmeteo.api.jma
2+
3+
import com.openmeteo.api.common.query.*
4+
import com.openmeteo.api.common.response.*
5+
import com.openmeteo.api.common.response.ResponseCurrentWeather.CurrentWeather
6+
import com.openmeteo.api.common.time.Date
7+
import com.openmeteo.api.common.time.TimeZone
8+
import com.openmeteo.api.common.units.PrecipitationUnit
9+
import com.openmeteo.api.common.units.TemperatureUnit
10+
import com.openmeteo.api.common.units.Unit
11+
import com.openmeteo.api.common.units.WindSpeedUnit
12+
import kotlinx.serialization.SerialName
13+
import kotlinx.serialization.Serializable
14+
import java.net.URL
15+
16+
object Jma {
17+
18+
val context = URL("https://api.open-meteo.com/v1/jma")
19+
20+
open class Query(
21+
override val latitude: Float,
22+
override val longitude: Float,
23+
override val hourly: Iterable<JmaHourly>? = null,
24+
override val daily: Iterable<JmaDaily>? = null,
25+
override val currentWeather: Boolean? = null,
26+
val temperatureUnit: TemperatureUnit? = null,
27+
val windSpeedUnit: WindSpeedUnit? = null,
28+
val precipitationUnit: PrecipitationUnit? = null,
29+
override val timeZone: TimeZone? = null,
30+
override val startDate: Date? = null,
31+
override val endDate: Date? = null,
32+
@SerialName("past_days")
33+
val pastDays: Int? = null,
34+
) : QueryCoordinates,
35+
QueryHourly,
36+
QueryDaily,
37+
QueryCurrentWeather,
38+
QueryDateRange
39+
40+
@Serializable
41+
open class Response(
42+
override val latitude: Float,
43+
override val longitude: Float,
44+
val elevation: Float,
45+
@SerialName("utc_offset_seconds")
46+
override val utcOffsetSeconds: Int,
47+
@SerialName("timezone")
48+
override val timeZone: TimeZone,
49+
@SerialName("timezone_abbreviation")
50+
override val timeZoneAbbreviation: String,
51+
@SerialName("hourly_units")
52+
override val hourlyUnits: Map<JmaHourly, Unit> = emptyMap(),
53+
@SerialName("hourly")
54+
override val hourlyValues: Map<JmaHourly, Array<Double?>> = emptyMap(),
55+
@SerialName("daily_units")
56+
override val dailyUnits: Map<JmaDaily, Unit> = emptyMap(),
57+
@SerialName("daily")
58+
override val dailyValues: Map<JmaDaily, Array<Double?>> = emptyMap(),
59+
@SerialName("generationtime_ms")
60+
override val generationTimeMs: Float,
61+
@SerialName("current_weather")
62+
override val currentWeather: CurrentWeather? = null,
63+
) : ResponseCoordinates,
64+
ResponseHourly,
65+
ResponseDaily,
66+
ResponseCurrentWeather,
67+
ResponseGenerationTimed
68+
69+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.openmeteo.api.jma
2+
3+
import com.openmeteo.api.common.query.QueryDaily.Options
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
enum class JmaDaily : Options {
9+
@SerialName("time")
10+
Time,
11+
@SerialName("temperature_2m_max")
12+
Temperature2mMax,
13+
@SerialName("temperature_2m_min")
14+
Temperature2mMin,
15+
@SerialName("apparent_temperature_max")
16+
ApparentTemperatureMax,
17+
@SerialName("apparent_temperature_min")
18+
ApparentTemperatureMin,
19+
@SerialName("sunrise")
20+
Sunrise,
21+
@SerialName("sunset")
22+
Sunset,
23+
@SerialName("precipitation_sum")
24+
PrecipitationSum,
25+
@SerialName("precipitation_hours")
26+
PrecipitationHours,
27+
@SerialName("windspeed_10m_max")
28+
Windspeed10mMax,
29+
@SerialName("winddirection_10m_dominant")
30+
Winddirection10mDominant,
31+
@SerialName("shortwave_radiation_sum")
32+
ShortwaveRadiationSum,
33+
@SerialName("et0_fao_evapotranspiration")
34+
Et0FaoEvapotranspiration,
35+
}
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
package com.openmeteo.api.jma
2+
3+
import com.openmeteo.api.common.query.QueryHourly.Options
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
enum class JmaHourly : Options {
9+
@SerialName("time")
10+
Time,
11+
@SerialName("temperature_2m")
12+
Temperature2m,
13+
@SerialName("relativehumidity_2m")
14+
Relativehumidity2m,
15+
@SerialName("dewpoint_2m")
16+
Dewpoint2m,
17+
@SerialName("apparent_temperature")
18+
ApparentTemperature,
19+
@SerialName("pressure_msl")
20+
PressureMsl,
21+
@SerialName("surface_pressure")
22+
SurfacePressure,
23+
@SerialName("precipitation")
24+
Precipitation,
25+
@SerialName("cloudcover")
26+
Cloudcover,
27+
@SerialName("cloudcover_low")
28+
CloudcoverLow,
29+
@SerialName("cloudcover_mid")
30+
CloudcoverMid,
31+
@SerialName("cloudcover_high")
32+
CloudcoverHigh,
33+
@SerialName("et0_fao_evapotranspiration")
34+
Et0FaoEvapotranspiration,
35+
@SerialName("vapor_pressure_deficit")
36+
VaporPressureDeficit,
37+
@SerialName("windspeed_10m")
38+
Windspeed10m,
39+
@SerialName("winddirection_10m")
40+
Winddirection10m,
41+
@SerialName("shortwave_radiation")
42+
ShortwaveRadiation,
43+
@SerialName("direct_radiation")
44+
DirectRadiation,
45+
@SerialName("diffuse_radiation")
46+
DiffuseRadiation,
47+
@SerialName("direct_normal_irradiance")
48+
DirectNormalIrradiance,
49+
@SerialName("terrestrial_radiation")
50+
TerrestrialRadiation,
51+
@SerialName("shortwave_radiation_instant")
52+
ShortwaveRadiationInstant,
53+
@SerialName("direct_radiation_instant")
54+
DirectRadiationInstant,
55+
@SerialName("diffuse_radiation_instant")
56+
DiffuseRadiationInstant,
57+
@SerialName("direct_normal_irradiance_instant")
58+
DirectNormalIrradianceInstant,
59+
@SerialName("terrestrial_radiation_instant")
60+
TerrestrialRadiationInstant,
61+
@SerialName("temperature_100hPa")
62+
Temperature100hPa,
63+
@SerialName("temperature_150hPa")
64+
Temperature150hPa,
65+
@SerialName("temperature_200hPa")
66+
Temperature200hPa,
67+
@SerialName("temperature_250hPa")
68+
Temperature250hPa,
69+
@SerialName("temperature_300hPa")
70+
Temperature300hPa,
71+
@SerialName("temperature_400hPa")
72+
Temperature400hPa,
73+
@SerialName("temperature_500hPa")
74+
Temperature500hPa,
75+
@SerialName("temperature_700hPa")
76+
Temperature700hPa,
77+
@SerialName("temperature_850hPa")
78+
Temperature850hPa,
79+
@SerialName("temperature_925hPa")
80+
Temperature925hPa,
81+
@SerialName("temperature_1000hPa")
82+
Temperature1000hPa,
83+
@SerialName("dewpoint_100hPa")
84+
Dewpoint100hPa,
85+
@SerialName("dewpoint_150hPa")
86+
Dewpoint150hPa,
87+
@SerialName("dewpoint_200hPa")
88+
Dewpoint200hPa,
89+
@SerialName("dewpoint_250hPa")
90+
Dewpoint250hPa,
91+
@SerialName("dewpoint_300hPa")
92+
Dewpoint300hPa,
93+
@SerialName("dewpoint_400hPa")
94+
Dewpoint400hPa,
95+
@SerialName("dewpoint_500hPa")
96+
Dewpoint500hPa,
97+
@SerialName("dewpoint_700hPa")
98+
Dewpoint700hPa,
99+
@SerialName("dewpoint_850hPa")
100+
Dewpoint850hPa,
101+
@SerialName("dewpoint_925hPa")
102+
Dewpoint925hPa,
103+
@SerialName("dewpoint_1000hPa")
104+
Dewpoint1000hPa,
105+
@SerialName("relativehumidity_100hPa")
106+
Relativehumidity100hPa,
107+
@SerialName("relativehumidity_150hPa")
108+
Relativehumidity150hPa,
109+
@SerialName("relativehumidity_200hPa")
110+
Relativehumidity200hPa,
111+
@SerialName("relativehumidity_250hPa")
112+
Relativehumidity250hPa,
113+
@SerialName("relativehumidity_300hPa")
114+
Relativehumidity300hPa,
115+
@SerialName("relativehumidity_400hPa")
116+
Relativehumidity400hPa,
117+
@SerialName("relativehumidity_500hPa")
118+
Relativehumidity500hPa,
119+
@SerialName("relativehumidity_700hPa")
120+
Relativehumidity700hPa,
121+
@SerialName("relativehumidity_850hPa")
122+
Relativehumidity850hPa,
123+
@SerialName("relativehumidity_925hPa")
124+
Relativehumidity925hPa,
125+
@SerialName("relativehumidity_1000hPa")
126+
Relativehumidity1000hPa,
127+
@SerialName("cloudcover_100hPa")
128+
Cloudcover100hPa,
129+
@SerialName("cloudcover_150hPa")
130+
Cloudcover150hPa,
131+
@SerialName("cloudcover_200hPa")
132+
Cloudcover200hPa,
133+
@SerialName("cloudcover_250hPa")
134+
Cloudcover250hPa,
135+
@SerialName("cloudcover_300hPa")
136+
Cloudcover300hPa,
137+
@SerialName("cloudcover_400hPa")
138+
Cloudcover400hPa,
139+
@SerialName("cloudcover_500hPa")
140+
Cloudcover500hPa,
141+
@SerialName("cloudcover_700hPa")
142+
Cloudcover700hPa,
143+
@SerialName("cloudcover_850hPa")
144+
Cloudcover850hPa,
145+
@SerialName("cloudcover_925hPa")
146+
Cloudcover925hPa,
147+
@SerialName("cloudcover_1000hPa")
148+
Cloudcover1000hPa,
149+
@SerialName("windspeed_100hPa")
150+
Windspeed100hPa,
151+
@SerialName("windspeed_150hPa")
152+
Windspeed150hPa,
153+
@SerialName("windspeed_200hPa")
154+
Windspeed200hPa,
155+
@SerialName("windspeed_250hPa")
156+
Windspeed250hPa,
157+
@SerialName("windspeed_300hPa")
158+
Windspeed300hPa,
159+
@SerialName("windspeed_400hPa")
160+
Windspeed400hPa,
161+
@SerialName("windspeed_500hPa")
162+
Windspeed500hPa,
163+
@SerialName("windspeed_700hPa")
164+
Windspeed700hPa,
165+
@SerialName("windspeed_850hPa")
166+
Windspeed850hPa,
167+
@SerialName("windspeed_925hPa")
168+
Windspeed925hPa,
169+
@SerialName("windspeed_1000hPa")
170+
Windspeed1000hPa,
171+
@SerialName("winddirection_100hPa")
172+
Winddirection100hPa,
173+
@SerialName("winddirection_150hPa")
174+
Winddirection150hPa,
175+
@SerialName("winddirection_200hPa")
176+
Winddirection200hPa,
177+
@SerialName("winddirection_250hPa")
178+
Winddirection250hPa,
179+
@SerialName("winddirection_300hPa")
180+
Winddirection300hPa,
181+
@SerialName("winddirection_400hPa")
182+
Winddirection400hPa,
183+
@SerialName("winddirection_500hPa")
184+
Winddirection500hPa,
185+
@SerialName("winddirection_700hPa")
186+
Winddirection700hPa,
187+
@SerialName("winddirection_850hPa")
188+
Winddirection850hPa,
189+
@SerialName("winddirection_925hPa")
190+
Winddirection925hPa,
191+
@SerialName("winddirection_1000hPa")
192+
Winddirection1000hPa,
193+
@SerialName("geopotential_height_100hPa")
194+
GeopotentialHeight100hPa,
195+
@SerialName("geopotential_height_150hPa")
196+
GeopotentialHeight150hPa,
197+
@SerialName("geopotential_height_200hPa")
198+
GeopotentialHeight200hPa,
199+
@SerialName("geopotential_height_250hPa")
200+
GeopotentialHeight250hPa,
201+
@SerialName("geopotential_height_300hPa")
202+
GeopotentialHeight300hPa,
203+
@SerialName("geopotential_height_400hPa")
204+
GeopotentialHeight400hPa,
205+
@SerialName("geopotential_height_500hPa")
206+
GeopotentialHeight500hPa,
207+
@SerialName("geopotential_height_700hPa")
208+
GeopotentialHeight700hPa,
209+
@SerialName("geopotential_height_850hPa")
210+
GeopotentialHeight850hPa,
211+
@SerialName("geopotential_height_925hPa")
212+
GeopotentialHeight925hPa,
213+
@SerialName("geopotential_height_1000hPa")
214+
GeopotentialHeight1000hPa,
215+
}

0 commit comments

Comments
 (0)