Skip to content

Commit

Permalink
feat: async support
Browse files Browse the repository at this point in the history
  • Loading branch information
RTAkland committed Sep 4, 2024
1 parent 417a209 commit 33feaa5
Show file tree
Hide file tree
Showing 27 changed files with 675 additions and 849 deletions.
6 changes: 0 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,6 @@ repositories {
dependencies {
implementation(libs.gson)
implementation(libs.okhttp)
testImplementation(libs.jupiterEngine)
testImplementation(libs.jupiterApi)
}

tasks.test {
useJUnitPlatform()
}

tasks.jar {
Expand Down
26 changes: 9 additions & 17 deletions src/main/kotlin/cn/rtast/qwsdk/QWeatherSDK.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,15 @@ class QWeatherSDK(key: String, publicID: String, plan: Plans) {
logger.info("Current Plan: $plan, Current API Host: $rootAPI")
}

fun geo(): Geo = Geo

fun weather(): Weather = Weather

fun indices(): Indices = Indices

fun air(): Air = Air

fun timeMachine(): TimeMachine = TimeMachine

fun tropical(): Tropical = Tropical

fun ocean(): Ocean = Ocean

fun astronomy(): Astronomy = Astronomy

fun warning(): Warning = Warning
val geo = Geo
val weather = Weather
val indices = Indices
val air = Air
val timeMachine = TimeMachine
val tropical = Tropical
val ocean = Ocean
val astronomy = Astronomy
val warning = Warning

@Deprecated("This API is not impl! (No data to create data entity!)")
fun solarRadiation() {
Expand Down
48 changes: 48 additions & 0 deletions src/main/kotlin/cn/rtast/qwsdk/api/Air.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@ object Air {
)
}

@JvmOverloads
fun nowAsync(
location: String,
lang: Lang = Lang.ZH,
onRequest: (AirNowEntity?) -> Unit,
) {
Http.getAsync<AirNowEntity>(
QWeatherSDK.rootAPI + "/air/now",
params = mapOf(
"location" to location,
"lang" to lang.toString()
)
) { onRequest(it) }
}

@JvmOverloads
fun now(
location: Coordinate,
Expand All @@ -47,6 +62,15 @@ object Air {
return this.now(location(), lang)
}

@JvmOverloads
fun nowAsync(
location: Coordinate,
lang: Lang = Lang.ZH,
onRequest: (AirNowEntity?) -> Unit,
) {
this.nowAsync(location(), lang) { onRequest }
}

@JvmOverloads
fun daily(
location: String,
Expand All @@ -61,6 +85,21 @@ object Air {
)
}

@JvmOverloads
fun dailyAsync(
location: String,
lang: Lang = Lang.ZH,
onRequest: (AirDailyEntity?) -> Unit,
) {
Http.getAsync<AirDailyEntity>(
QWeatherSDK.rootAPI + "/air/5d",
params = mapOf(
"location" to location,
"lang" to lang.toString()
)
) { onRequest(it) }
}

@JvmOverloads
fun daily(
location: Coordinate,
Expand All @@ -69,5 +108,14 @@ object Air {
return this.daily(location(), lang)
}

@JvmOverloads
fun dailyAsync(
location: Coordinate,
lang: Lang = Lang.ZH,
onRequest: (AirDailyEntity?) -> Unit,
) {
this.dailyAsync(location(), lang) { onRequest }
}

val beta = AirBeta
}
30 changes: 30 additions & 0 deletions src/main/kotlin/cn/rtast/qwsdk/api/AirBeta.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,41 @@ object AirBeta {
)
}

@JvmOverloads
fun nowAsync(
location: String,
lang: Lang = Lang.ZH,
pollutant: Boolean = false,
station: Boolean = false,
onRequest: (BetaAirNowEntity?) -> Unit
) {
Http.getAsync<BetaAirNowEntity>(
QWeatherSDK.rootAPI + "airquality/v1/now/$location",
params = mapOf(
"lang" to lang.toString(),
"pollutant" to pollutant,
"station" to station
)
) { onRequest(it) }
}

@JvmOverloads
fun stationInfo(location: String, lang: Lang = Lang.ZH): BetaAirStationEntity {
return Http.get<BetaAirStationEntity>(
QWeatherSDK.rootAPI + "airquality/v1/station/$location",
params = mapOf("lang" to lang.toString())
)
}

@JvmOverloads
fun stationInfoAsync(
location: String,
lang: Lang = Lang.ZH,
onRequest: (BetaAirStationEntity?) -> Unit
) {
Http.getAsync<BetaAirStationEntity>(
QWeatherSDK.rootAPI + "airquality/v1/station/$location",
params = mapOf("lang" to lang.toString())
) { onRequest(it) }
}
}
85 changes: 85 additions & 0 deletions src/main/kotlin/cn/rtast/qwsdk/api/Astronomy.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,26 @@ object Astronomy {
)
}

@JvmOverloads
@Throws(InvalidDateException::class)
fun sunAsync(
location: String,
date: String,
lang: Lang = Lang.ZH,
onRequest: (SunEntity?) -> Unit
) {
DateUtil(date).validateYMD()
Http.getAsync<SunEntity>(
QWeatherSDK.rootAPI + "astronomy/sun",
params = mapOf(
"location" to location,
"date" to date,
"lang" to lang.toString()
)
) { onRequest(it) }
}


@JvmOverloads
@Throws(InvalidDateException::class)
fun sun(
Expand All @@ -54,6 +74,18 @@ object Astronomy {
return this.sun(location(), date, lang)
}

@JvmOverloads
@Throws(InvalidDateException::class)
fun sunAsync(
location: Coordinate,
date: String,
lang: Lang = Lang.ZH,
onRequest: (SunEntity?) -> Unit
) {
this.sunAsync(location(), date, lang) { onRequest }
}


@JvmOverloads
@Throws(InvalidDateException::class)
fun moon(
Expand All @@ -72,6 +104,25 @@ object Astronomy {
)
}

@JvmOverloads
@Throws(InvalidDateException::class)
fun moonAsync(
location: String,
date: String,
lang: Lang = Lang.ZH,
onRequest: (MoonEntity?) -> Unit
) {
DateUtil(date).validateYMD()
Http.getAsync<MoonEntity>(
QWeatherSDK.rootAPI + "astronomy/moon",
params = mapOf(
"location" to location,
"date" to date,
"lang" to lang.toString()
)
) { onRequest(it) }
}

@JvmOverloads
@Throws(InvalidDateException::class)
fun moon(
Expand All @@ -82,6 +133,17 @@ object Astronomy {
return this.moon(location(), date, lang)
}

@JvmOverloads
@Throws(InvalidDateException::class)
fun moonAsync(
location: Coordinate,
date: String,
lang: Lang = Lang.ZH,
onRequest: (MoonEntity?) -> Unit
) {
this.moonAsync(location(), date, lang) { onRequest }
}

@Throws(InvalidDateException::class)
fun solarElevationAngle(
location: Coordinate,
Expand All @@ -103,4 +165,27 @@ object Astronomy {
)
)
}

@Throws(InvalidDateException::class)
fun solarElevationAngleAsync(
location: Coordinate,
date: String,
time: String,
timezone: String,
alt: Int,
onRequest: (SolarElevationAngleEntity?) -> Unit
) {
DateUtil(date).validateYMD()
DateUtil(time).validateHM()
Http.getAsync<SolarElevationAngleEntity>(
QWeatherSDK.rootAPI + "astronomy/solar-elevation-angle",
params = mapOf(
"location" to location(),
"date" to date,
"time" to timezone,
"alt" to alt,
"timezone" to timezone,
)
) { onRequest(it) }
}
}
Loading

0 comments on commit 33feaa5

Please sign in to comment.