Skip to content

Commit 8dac395

Browse files
committed
Bug fix: bulk geocoding
1 parent e2a1c0b commit 8dac395

File tree

7 files changed

+89
-34
lines changed

7 files changed

+89
-34
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Kotlin:
2828

2929
```kotlin
3030
dependencies {
31-
val retrofitVersion = "2.9.0"
31+
val retrofitVersion = "2.11.0"
3232

3333
// API package
3434
implementation("com.stadiamaps:api:3.2.0")
@@ -47,7 +47,7 @@ Groovy:
4747

4848
```groovy
4949
dependencies {
50-
def retrofitVersion = "2.9.0"
50+
def retrofitVersion = "2.11.0"
5151
5252
// API package
5353
implementation 'com.stadiamaps:api:3.2.0'

RELEASE.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Releasing to Maven Central
22

33
Releases are done automatically using GitHub actions.
4+
Just bump the version number in settings.gradle and create a GitHub release.
45
This will keep on working until it doesn't every few years ;)
56
This document is here to help when that happens.
67

generated-client/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ publishing {
145145
create<MavenPublication>("publication") {
146146
groupId = "com.stadiamaps"
147147
artifactId = "api"
148-
version = "3.2.0"
148+
version = "3.2.1"
149149

150150
from(components["java"])
151151

generated-client/openapi.yaml

+12-29
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ servers:
55
info:
66
description: >-
77
The Stadia Maps Geospatial APIs provide you with the data you need to build awesome applications.
8-
version: 6.6.2
8+
version: 6.6.3
99
title: Stadia Maps Geospatial APIs
1010
contact:
1111
name: Stadia Maps Support
@@ -2190,17 +2190,6 @@ components:
21902190
$ref: '#/components/schemas/limit'
21912191
lang:
21922192
$ref: '#/components/schemas/peliasLang'
2193-
searchBulkQuery:
2194-
type: object
2195-
properties:
2196-
endpoint:
2197-
type: string
2198-
enum:
2199-
- /v1/search
2200-
query:
2201-
type: object
2202-
allOf:
2203-
- $ref: '#/components/schemas/searchQuery'
22042193
searchStructuredQuery:
22052194
type: object
22062195
properties:
@@ -2250,27 +2239,21 @@ components:
22502239
$ref: '#/components/schemas/limit'
22512240
lang:
22522241
$ref: '#/components/schemas/peliasLang'
2253-
searchStructuredBulkQuery:
2254-
type: object
2255-
properties:
2256-
endpoint:
2257-
type: string
2258-
enum:
2259-
- /v1/search/structured
2260-
query:
2261-
$ref: '#/components/schemas/searchStructuredQuery'
22622242
bulkSearchRequest:
22632243
type: array
22642244
items:
22652245
title: BulkRequest
2266-
oneOf:
2267-
- $ref: '#/components/schemas/searchBulkQuery'
2268-
- $ref: '#/components/schemas/searchStructuredBulkQuery'
2269-
discriminator:
2270-
propertyName: endpoint
2271-
mapping:
2272-
/v1/search: '#/components/schemas/searchBulkQuery'
2273-
/v1/search/structured: '#/components/schemas/searchStructuredBulkQuery'
2246+
type: object
2247+
properties:
2248+
endpoint:
2249+
type: string
2250+
enum:
2251+
- /v1/search
2252+
- /v1/search/structured
2253+
query:
2254+
oneOf:
2255+
- $ref: '#/components/schemas/searchQuery'
2256+
- $ref: '#/components/schemas/searchStructuredQuery'
22742257
example:
22752258
[
22762259
{ "endpoint": "/v1/search", "query": { "text": "Põhja pst 27" } },
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.stadiamaps.api.models
2+
3+
abstract class BulkRequestFactory {
4+
companion object {
5+
fun searchRequest(query: SearchQuery) =
6+
BulkRequest(
7+
BulkRequest.Endpoint.search, BulkRequestQuery(
8+
text = query.text,
9+
focusPointLat = query.focusPointLat,
10+
focusPointLon = query.focusPointLon,
11+
boundaryRectMinLat = query.boundaryRectMinLat,
12+
boundaryRectMaxLat = query.boundaryRectMaxLat,
13+
boundaryRectMinLon = query.boundaryRectMinLon,
14+
boundaryRectMaxLon = query.boundaryRectMaxLon,
15+
boundaryCircleLat = query.boundaryCircleLat,
16+
boundaryCircleLon = query.boundaryCircleLon,
17+
boundaryCircleRadius = query.boundaryCircleRadius,
18+
boundaryCountry = query.boundaryCountry,
19+
boundaryGid = query.boundaryGid,
20+
layers = query.layers,
21+
sources = query.sources,
22+
propertySize = query.propertySize,
23+
lang = query.lang,
24+
)
25+
)
26+
27+
fun searchStructuredRequest(query: SearchStructuredQuery) =
28+
BulkRequest(
29+
BulkRequest.Endpoint.searchSlashStructured, BulkRequestQuery(
30+
address = query.address,
31+
neighbourhood = query.neighbourhood,
32+
borough = query.borough,
33+
locality = query.locality,
34+
region = query.region,
35+
postalCode = query.postalCode,
36+
country = query.country,
37+
focusPointLat = query.focusPointLat,
38+
focusPointLon = query.focusPointLon,
39+
boundaryRectMinLat = query.boundaryRectMinLat,
40+
boundaryRectMaxLat = query.boundaryRectMaxLat,
41+
boundaryRectMinLon = query.boundaryRectMinLon,
42+
boundaryRectMaxLon = query.boundaryRectMaxLon,
43+
boundaryCircleLat = query.boundaryCircleLat,
44+
boundaryCircleLon = query.boundaryCircleLon,
45+
boundaryCircleRadius = query.boundaryCircleRadius,
46+
boundaryCountry = query.boundaryCountry,
47+
boundaryGid = query.boundaryGid,
48+
layers = query.layers,
49+
sources = query.sources,
50+
propertySize = query.propertySize,
51+
lang = query.lang,
52+
)
53+
)
54+
}
55+
}

generated-client/src/test/kotlin/TestGeocodingApi.kt

+17-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import com.stadiamaps.api.apis.GeocodingApi
22
import com.stadiamaps.api.auth.ApiKeyAuth
33
import com.stadiamaps.api.infrastructure.ApiClient
44
import com.stadiamaps.api.infrastructure.CollectionFormats
5-
import com.stadiamaps.api.models.PeliasLayer
5+
import com.stadiamaps.api.models.*
66
import org.junit.jupiter.api.BeforeEach
77
import org.junit.jupiter.api.Test
88
import kotlin.test.assertEquals
@@ -47,6 +47,22 @@ internal class TestGeocodingApi {
4747
assertEquals(PeliasLayer.address, body.features.first().properties!!.layer)
4848
}
4949

50+
@Test
51+
fun testSearchBulk() {
52+
val reqs = listOf(
53+
BulkRequestFactory.searchRequest(SearchQuery(text = address)),
54+
BulkRequestFactory.searchStructuredRequest(SearchStructuredQuery(address = address, country = "Estonia"))
55+
)
56+
val res = service.searchBulk(reqs).execute()
57+
val body = res.body() ?: fail("Request failed: ${res.errorBody()}")
58+
59+
for (rec in body) {
60+
assertEquals(200, rec.status)
61+
assertEquals("Estonia", rec.response!!.features.first().properties!!.country)
62+
assertEquals(PeliasLayer.address, rec.response!!.features.first().properties!!.layer)
63+
}
64+
}
65+
5066
@Test
5167
fun testReverse() {
5268
val res = service.reverse(59.444351, 24.750645).execute()

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
kotlin.code.style=official
2-
retrofitVersion=2.9.0
2+
retrofitVersion=2.11.0

0 commit comments

Comments
 (0)