Skip to content

Commit 6ccd66f

Browse files
committed
Multiplatform: add nearby api
1 parent 82b457d commit 6ccd66f

File tree

7 files changed

+33
-164
lines changed

7 files changed

+33
-164
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ fastlane/metadata/android/screenshots.html
1717
app/release
1818

1919
api-*.json
20+
21+
ios/GalwayBusApp/GalwayBusApp.xcworkspace/xcuserdata

SharedCode/src/commonMain/kotlin/com/surrus/galwaybus/common/GalwayBusRepository.kt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,41 @@ import kotlinx.coroutines.launch
88

99
class GalwayBusRepository {
1010

11+
private val galwayBusApi = GalwayBusApi()
1112

1213
suspend fun fetchBusStops(): List<BusStop> {
13-
val galwayBusApi = GalwayBusApi()
1414
return galwayBusApi.fetchBusStops()
1515
}
1616

1717
fun fetchBusStops(success: (List<BusStop>) -> Unit) {
1818
GlobalScope.launch(ApplicationDispatcher) {
19-
val galwayBusApi = GalwayBusApi()
20-
success(galwayBusApi.fetchBusStops())
19+
success(fetchBusStops())
2120
}
2221
}
2322

2423

2524
suspend fun fetchBusRoutes(): List<BusRoute> {
26-
val galwayBusApi = GalwayBusApi()
2725
val busRoutes = galwayBusApi.fetchBusRoutes()
2826
return transformBusRouteMapToList(busRoutes)
2927
}
3028

3129
fun fetchBusRoutes(success: (List<BusRoute>) -> Unit) {
3230
GlobalScope.launch(ApplicationDispatcher) {
33-
val galwayBusApi = GalwayBusApi()
34-
val busRoutes = galwayBusApi.fetchBusRoutes()
35-
success(transformBusRouteMapToList(busRoutes))
31+
success(fetchBusRoutes())
3632
}
3733
}
3834

35+
suspend fun getNearestStops(latitude: Double, longitude: Double): List<BusStop> {
36+
return galwayBusApi.getNearestStops(latitude, longitude)
37+
}
38+
39+
fun getNearestStops(latitude: Double, longitude: Double, success: (List<BusStop>) -> Unit) {
40+
GlobalScope.launch(ApplicationDispatcher) {
41+
success(getNearestStops(latitude, longitude))
42+
}
43+
}
44+
45+
3946
private fun transformBusRouteMapToList(busRoutesMap: Map<String, BusRoute>): List<BusRoute> {
4047
val busRouteList = mutableListOf<BusRoute>()
4148
busRoutesMap.values.forEach {

SharedCode/src/commonMain/kotlin/com/surrus/galwaybus/common/remote/GalwayBusApi.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import io.ktor.client.HttpClient
66
import io.ktor.client.features.json.JsonFeature
77
import io.ktor.client.features.json.serializer.KotlinxSerializer
88
import io.ktor.client.request.get
9+
import io.ktor.client.request.parameter
910
import io.ktor.client.request.url
1011
import kotlinx.serialization.KSerializer
1112
import kotlinx.serialization.internal.StringSerializer
@@ -27,7 +28,6 @@ class GalwayBusApi() {
2728
setMapper(BusStop::class, BusStop.serializer())
2829
//setListMapper(BusStop::class, BusStop.serializer())
2930
}
30-
3131
}
3232
}
3333
}
@@ -44,7 +44,15 @@ class GalwayBusApi() {
4444
val jsonArrayString = client.get<String> {
4545
url("$baseUrl/stops.json")
4646
}
47+
return Json.nonstrict.parse(BusStop.serializer().list, jsonArrayString)
48+
}
4749

50+
suspend fun getNearestStops(latitude: Double, longitude: Double): List<BusStop> {
51+
val jsonArrayString = client.get<String> {
52+
url("$baseUrl/stops/nearby.json")
53+
parameter("latitude", latitude)
54+
parameter("longitude", longitude)
55+
}
4856
return Json.nonstrict.parse(BusStop.serializer().list, jsonArrayString)
4957
}
5058

base/src/main/java/com/surrus/galwaybus/GalwayBusApplication.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,13 @@ class GalwayBusApplication : Application() {
5858
// exploring multiplatform kotlin
5959
val repo = GalwayBusRepository()
6060
GlobalScope.launch {
61-
val stops = repo.fetchBusStops()
61+
val stops = repo.getNearestStops(53.2743394, -9.0514163)
6262
Logger.d(stops)
63-
}
6463

65-
repo.fetchBusRoutes {
66-
Logger.d(it)
67-
}
6864

6965

66+
}
67+
7068
Logger.i("GalwayBusApplication init completed")
7169
}
7270

ios/GalwayBusApp/GalwayBusApp.xcworkspace/xcuserdata/jooreill.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

Lines changed: 0 additions & 151 deletions
This file was deleted.

ios/GalwayBusApp/GalwayBusApp/StopsViewController.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ class FirstViewController: UIViewController, UITableViewDataSource, UITableViewD
2626
self.tableView.reloadData()
2727
return KotlinUnit()
2828
})
29+
30+
31+
g.getNearestStops(latitude: 53.2743394, longitude: -9.0514163, success: { data in
32+
return KotlinUnit()
33+
})
2934
}
3035

3136

0 commit comments

Comments
 (0)