@@ -17,13 +17,13 @@ private constructor(
17
17
@get:JvmName(" jsonMapper" ) val jsonMapper: JsonMapper ,
18
18
@get:JvmName(" clock" ) val clock: Clock ,
19
19
@get:JvmName(" baseUrl" ) val baseUrl: String ,
20
- @get:JvmName(" apiKey" ) val apiKey: String ,
21
- @get:JvmName(" organization" ) val organization: String? ,
22
- @get:JvmName(" project" ) val project: String? ,
23
20
@get:JvmName(" headers" ) val headers: ListMultimap <String , String >,
24
21
@get:JvmName(" queryParams" ) val queryParams: ListMultimap <String , String >,
25
22
@get:JvmName(" responseValidation" ) val responseValidation: Boolean ,
26
23
@get:JvmName(" maxRetries" ) val maxRetries: Int ,
24
+ @get:JvmName(" apiKey" ) val apiKey: String ,
25
+ @get:JvmName(" organization" ) val organization: String? ,
26
+ @get:JvmName(" project" ) val project: String? ,
27
27
) {
28
28
29
29
fun toBuilder () = Builder ().from(this )
@@ -40,11 +40,11 @@ private constructor(
40
40
class Builder {
41
41
42
42
private var httpClient: HttpClient ? = null
43
- private var jsonMapper: JsonMapper ? = null
43
+ private var jsonMapper: JsonMapper = jsonMapper()
44
44
private var clock: Clock = Clock .systemUTC()
45
45
private var baseUrl: String = PRODUCTION_URL
46
- private var headers: MutableMap <String , MutableList < String >> = mutableMapOf ()
47
- private var queryParams: MutableMap <String , MutableList < String >> = mutableMapOf ()
46
+ private var headers: ListMultimap <String , String > = ArrayListMultimap .create ()
47
+ private var queryParams: ListMultimap <String , String > = ArrayListMultimap .create ()
48
48
private var responseValidation: Boolean = false
49
49
private var maxRetries: Int = 2
50
50
private var apiKey: String? = null
@@ -57,14 +57,8 @@ private constructor(
57
57
jsonMapper = clientOptions.jsonMapper
58
58
clock = clientOptions.clock
59
59
baseUrl = clientOptions.baseUrl
60
- headers =
61
- clientOptions.headers.asMap().mapValuesTo(mutableMapOf ()) { (_, value) ->
62
- value.toMutableList()
63
- }
64
- queryParams =
65
- clientOptions.queryParams.asMap().mapValuesTo(mutableMapOf ()) { (_, value) ->
66
- value.toMutableList()
67
- }
60
+ headers = ArrayListMultimap .create(clientOptions.headers)
61
+ queryParams = ArrayListMultimap .create(clientOptions.queryParams)
68
62
responseValidation = clientOptions.responseValidation
69
63
maxRetries = clientOptions.maxRetries
70
64
apiKey = clientOptions.apiKey
@@ -76,47 +70,43 @@ private constructor(
76
70
77
71
fun jsonMapper (jsonMapper : JsonMapper ) = apply { this .jsonMapper = jsonMapper }
78
72
79
- fun baseUrl (baseUrl : String ) = apply { this .baseUrl = baseUrl }
80
-
81
73
fun clock (clock : Clock ) = apply { this .clock = clock }
82
74
75
+ fun baseUrl (baseUrl : String ) = apply { this .baseUrl = baseUrl }
76
+
83
77
fun headers (headers : Map <String , Iterable <String >>) = apply {
84
78
this .headers.clear()
85
79
putAllHeaders(headers)
86
80
}
87
81
88
- fun putHeader (name : String , value : String ) = apply {
89
- this .headers.getOrPut(name) { mutableListOf () }.add(value)
90
- }
82
+ fun putHeader (name : String , value : String ) = apply { headers.put(name, value) }
91
83
92
84
fun putHeaders (name : String , values : Iterable <String >) = apply {
93
- this . headers.getOrPut (name) { mutableListOf () }.addAll( values)
85
+ headers.putAll (name, values)
94
86
}
95
87
96
88
fun putAllHeaders (headers : Map <String , Iterable <String >>) = apply {
97
- headers.forEach(this ::putHeaders)
89
+ headers.forEach(::putHeaders)
98
90
}
99
91
100
- fun removeHeader (name : String ) = apply { this . headers.put (name, mutableListOf () ) }
92
+ fun removeHeader (name : String ) = apply { headers.removeAll (name) }
101
93
102
94
fun queryParams (queryParams : Map <String , Iterable <String >>) = apply {
103
95
this .queryParams.clear()
104
96
putAllQueryParams(queryParams)
105
97
}
106
98
107
- fun putQueryParam (name : String , value : String ) = apply {
108
- this .queryParams.getOrPut(name) { mutableListOf () }.add(value)
109
- }
99
+ fun putQueryParam (name : String , value : String ) = apply { queryParams.put(name, value) }
110
100
111
101
fun putQueryParams (name : String , values : Iterable <String >) = apply {
112
- this . queryParams.getOrPut (name) { mutableListOf () }.addAll( values)
102
+ queryParams.putAll (name, values)
113
103
}
114
104
115
105
fun putAllQueryParams (queryParams : Map <String , Iterable <String >>) = apply {
116
- queryParams.forEach(this ::putQueryParams)
106
+ queryParams.forEach(::putQueryParams)
117
107
}
118
108
119
- fun removeQueryParam (name : String ) = apply { this . queryParams.put (name, mutableListOf () ) }
109
+ fun removeQueryParam (name : String ) = apply { queryParams.removeAll (name) }
120
110
121
111
fun responseValidation (responseValidation : Boolean ) = apply {
122
112
this .responseValidation = responseValidation
@@ -158,8 +148,8 @@ private constructor(
158
148
if (! apiKey.isNullOrEmpty()) {
159
149
headers.put(" Authorization" , " Bearer ${apiKey} " )
160
150
}
161
- this .headers.forEach(headers::replaceValues)
162
- this .queryParams.forEach(queryParams::replaceValues)
151
+ this .headers.asMap(). forEach(headers::replaceValues)
152
+ this .queryParams.asMap(). forEach(queryParams::replaceValues)
163
153
164
154
return ClientOptions (
165
155
httpClient!! ,
@@ -170,16 +160,16 @@ private constructor(
170
160
.maxRetries(maxRetries)
171
161
.build()
172
162
),
173
- jsonMapper ? : jsonMapper() ,
163
+ jsonMapper,
174
164
clock,
175
165
baseUrl,
176
- apiKey!! ,
177
- organization,
178
- project,
179
166
headers.toImmutable(),
180
167
queryParams.toImmutable(),
181
168
responseValidation,
182
169
maxRetries,
170
+ apiKey!! ,
171
+ organization,
172
+ project,
183
173
)
184
174
}
185
175
}
0 commit comments