Skip to content

Commit 1a6909f

Browse files
committed
Merge branch '2-generate-interface-from-openapi-specs' into 'master'
Resolve "Generate Interface from OpenAPI specs" Closes #2 See merge request pace/mobile/android/pace-cloud-sdk!25
2 parents fdfac9a + 469c1a6 commit 1a6909f

File tree

99 files changed

+4036
-464
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+4036
-464
lines changed

library/src/main/java/cloud/pace/sdk/poikit/POIKit.kt

Lines changed: 105 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,28 @@ import androidx.lifecycle.Lifecycle
55
import androidx.lifecycle.LifecycleObserver
66
import androidx.lifecycle.OnLifecycleEvent
77
import androidx.lifecycle.ProcessLifecycleOwner
8+
import cloud.pace.sdk.api.API
9+
import cloud.pace.sdk.api.model.Categories
10+
import cloud.pace.sdk.api.model.Fuel
11+
import cloud.pace.sdk.api.model.PriceHistory
12+
import cloud.pace.sdk.api.model.RegionalPrices
13+
import cloud.pace.sdk.api.request.gasStations.getGasStation
14+
import cloud.pace.sdk.api.request.metadataFilters.getMetadataFilters
15+
import cloud.pace.sdk.api.request.priceHistories.getPriceHistory
16+
import cloud.pace.sdk.api.request.prices.getRegionalPrices
817
import cloud.pace.sdk.poikit.database.POIKitDatabase
918
import cloud.pace.sdk.poikit.poi.*
10-
import cloud.pace.sdk.poikit.poi.download.*
19+
import cloud.pace.sdk.poikit.poi.download.GasStationCodes
20+
import cloud.pace.sdk.poikit.poi.download.GasStationMovedResponse
21+
import cloud.pace.sdk.poikit.poi.downloadOld.TileDownloader
1122
import cloud.pace.sdk.poikit.routing.NavigationApiClient
1223
import cloud.pace.sdk.poikit.routing.NavigationMode
1324
import cloud.pace.sdk.poikit.routing.NavigationRequest
1425
import cloud.pace.sdk.poikit.routing.Route
1526
import cloud.pace.sdk.poikit.search.AddressSearchClient
1627
import cloud.pace.sdk.poikit.search.AddressSearchRequest
1728
import cloud.pace.sdk.poikit.search.PhotonResult
29+
import cloud.pace.sdk.poikit.utils.ApiException
1830
import cloud.pace.sdk.utils.*
1931
import com.google.android.gms.maps.model.VisibleRegion
2032
import io.reactivex.rxjava3.core.Observable
@@ -25,11 +37,7 @@ object POIKit : POIKitKoinComponent, LifecycleObserver {
2537

2638
private val database: POIKitDatabase by inject()
2739
private val navigationApi: NavigationApiClient by inject()
28-
private val poiApi: PoiApiClient by inject()
2940
private val addressSearchApi: AddressSearchClient by inject()
30-
private val dynamicFilterApi: DynamicFilterApiClient by inject()
31-
private val priceHistoryApi: PriceHistoryApiClient by inject()
32-
private val gasStationApi: GasStationApiClient by inject()
3341
private val locationProvider: LocationProvider by inject()
3442
var maxPoiSearchBoxSize = 15000.0
3543

@@ -82,24 +90,109 @@ object POIKit : POIKitKoinComponent, LifecycleObserver {
8290
}
8391
}
8492

85-
fun getRegionalPrice(latitude: Double, longitude: Double, completion: (Completion<List<RegionalPriceResponse>?>) -> Unit) {
86-
poiApi.getRegionalPrices(latitude, longitude, completion)
93+
fun getRegionalPrice(latitude: Float, longitude: Float, completion: (Completion<List<RegionalPrices>?>) -> Unit) {
94+
API.prices.getRegionalPrices(latitude, longitude).enqueue {
95+
onResponse = {
96+
val body = it.body()
97+
if (it.isSuccessful && body != null) {
98+
completion(Success(body))
99+
} else {
100+
completion(Failure(ApiException(it.code(), it.message())))
101+
}
102+
}
103+
104+
onFailure = {
105+
completion(Failure(it ?: Exception("Unknown exception")))
106+
}
107+
}
87108
}
88109

89110
fun searchAddress(request: AddressSearchRequest): Observable<PhotonResult> {
90111
return addressSearchApi.searchAddress(request)
91112
}
92113

93-
fun getDynamicFilters(latitude: Double, longitude: Double, completion: (Completion<DynamicFilterResponse?>) -> Unit) {
94-
dynamicFilterApi.getDynamicFilters(latitude, longitude, completion)
114+
fun getDynamicFilters(latitude: Double, longitude: Double, completion: (Completion<Categories?>) -> Unit) {
115+
API.metadataFilters.getMetadataFilters(latitude.toFloat(), longitude.toFloat()).enqueue {
116+
onResponse = {
117+
val body = it.body()
118+
if (it.isSuccessful && body != null) {
119+
completion(Success(body))
120+
} else {
121+
completion(Failure(ApiException(it.code(), it.message())))
122+
}
123+
}
124+
125+
onFailure = {
126+
completion(Failure(it ?: Exception("Unknown exception")))
127+
}
128+
}
95129
}
96130

97-
fun getPriceHistory(id: String, fuelType: FuelType, from: Date, to: Date, completion: (Completion<PriceHistoryApiResponse?>) -> Unit) {
98-
priceHistoryApi.getPriceHistory(id, fuelType.value, from, to, completion)
131+
fun getPriceHistory(id: String, fuelType: Fuel, from: Date, to: Date, completion: (Completion<PriceHistory?>) -> Unit) {
132+
API.priceHistories.getPriceHistory(id, fuelType, from, to).enqueue {
133+
onResponse = {
134+
val body = it.body()
135+
if (it.isSuccessful && body != null) {
136+
completion(Success(body))
137+
} else {
138+
completion(Failure(ApiException(it.code(), it.message())))
139+
}
140+
}
141+
142+
onFailure = {
143+
completion(Failure(it ?: Exception("Unknown exception")))
144+
}
145+
}
99146
}
100147

101148
fun getGasStation(id: String, compileOpeningHours: Boolean, forMovedGasStation: Boolean, completion: (Completion<GasStationMovedResponse>) -> Unit) {
102-
gasStationApi.getGasStation(id, compileOpeningHours, forMovedGasStation, completion)
149+
API.gasStations.getGasStation(id, compileOpeningHours).enqueue {
150+
onResponse = {
151+
when (it.code()) {
152+
GasStationCodes.STATUS_MOVED -> {
153+
val newUuid: String? = it.headers().values(GasStationCodes.HEADER_LOCATION).first()?.split("/")?.last()
154+
if (newUuid.isNotNullOrEmpty()) {
155+
completion(Success(GasStationMovedResponse(newUuid, true, null, null)))
156+
} else {
157+
completion(Success(GasStationMovedResponse(null, true, null, null)))
158+
}
159+
}
160+
GasStationCodes.STATUS_OK -> {
161+
val priorResponse = it.raw().priorResponse()
162+
if (priorResponse != null) {
163+
val newUuid = priorResponse.headers().values(GasStationCodes.HEADER_LOCATION).first()?.split("/")?.last()
164+
if (newUuid.isNotNullOrEmpty()) {
165+
completion(Success(GasStationMovedResponse(newUuid, true, null, null)))
166+
} else {
167+
completion(Success(GasStationMovedResponse(null, false, null, null)))
168+
}
169+
} else {
170+
if (forMovedGasStation)
171+
completion(
172+
Success(
173+
GasStationMovedResponse(
174+
null, true, it.body()?.latitude?.toDouble(),
175+
it.body()?.longitude?.toDouble()
176+
)
177+
)
178+
)
179+
else
180+
completion(Success(GasStationMovedResponse(null, false, null, null)))
181+
}
182+
}
183+
GasStationCodes.STATUS_NOT_FOUND -> {
184+
completion(Success(GasStationMovedResponse(null, true, null, null)))
185+
}
186+
else -> {
187+
completion(Failure(Exception("Server error")))
188+
}
189+
}
190+
}
191+
192+
onFailure = {
193+
completion(Failure(it ?: Exception("Unknown exception")))
194+
}
195+
}
103196
}
104197

105198
fun getGasStationLocal(vararg ids: String, completion: (Completion<List<GasStation>>) -> Unit) {

library/src/main/java/cloud/pace/sdk/poikit/poi/Geometry.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cloud.pace.sdk.poikit.poi
22

33
import android.util.Log
4-
import cloud.pace.sdk.poikit.poi.download.VectorTile
4+
import cloud.pace.sdk.poikit.poi.downloadOld.VectorTile
55

66
class Geometry {
77

library/src/main/java/cloud/pace/sdk/poikit/poi/LocationPoint.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package cloud.pace.sdk.poikit.poi
22

33
import android.location.Location
44
import android.os.Parcelable
5-
import cloud.pace.sdk.poikit.poi.download.TileInformation
5+
import cloud.pace.sdk.poikit.poi.downloadOld.TileInformation
66
import cloud.pace.sdk.poikit.utils.GeoMathUtils
77
import cloud.pace.sdk.poikit.utils.GeoMathUtils.toDegrees
88
import cloud.pace.sdk.poikit.utils.GeoMathUtils.toRadian

library/src/main/java/cloud/pace/sdk/poikit/poi/PoiKitObserverToken.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.Observer
66
import cloud.pace.sdk.poikit.POIKit
77
import cloud.pace.sdk.poikit.database.GasStationDAO
8-
import cloud.pace.sdk.poikit.poi.download.TileDownloader
9-
import cloud.pace.sdk.poikit.poi.download.TileQueryRequestOuterClass.TileQueryRequest.*
8+
import cloud.pace.sdk.poikit.poi.downloadOld.TileDownloader
9+
import cloud.pace.sdk.poikit.poi.downloadOld.TileQueryRequestOuterClass.TileQueryRequest.*
1010
import cloud.pace.sdk.poikit.utils.POIKitConfig
1111
import cloud.pace.sdk.poikit.utils.ZoomException
1212
import cloud.pace.sdk.poikit.utils.diameter

library/src/main/java/cloud/pace/sdk/poikit/poi/download/DynamicFilterApi.kt

Lines changed: 0 additions & 91 deletions
This file was deleted.
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package cloud.pace.sdk.poikit.poi.download
22

33
import android.location.Location
4+
import cloud.pace.sdk.api.model.Categories
45

56
object DynamicFilterCache {
6-
private var cache: List<DynamicFilter> = listOf()
7+
private var cache: Categories = listOf()
78
var userLocation: Location? = null
89
var cachedFilterLocation: Location? = null
910

10-
fun cacheFilter(filters: List<DynamicFilter>?, location: Location) {
11+
fun cacheFilter(filters: Categories?, location: Location) {
1112
if (filters != null) {
1213
cache = filters
1314
cachedFilterLocation = location
1415
}
1516
}
1617

17-
fun getFilterCache(): List<DynamicFilter> {
18+
fun getFilterCache(): Categories {
1819
return cache
1920
}
2021
}

0 commit comments

Comments
 (0)