@@ -17,12 +17,12 @@ private constructor(
1717 @get:JvmName(" jsonMapper" ) val jsonMapper: JsonMapper ,
1818 @get:JvmName(" clock" ) val clock: Clock ,
1919 @get:JvmName(" baseUrl" ) val baseUrl: String ,
20- @get:JvmName(" apiKey" ) val apiKey: String ,
21- @get:JvmName(" webhookSecret" ) val webhookSecret: String? ,
2220 @get:JvmName(" headers" ) val headers: ListMultimap <String , String >,
2321 @get:JvmName(" queryParams" ) val queryParams: ListMultimap <String , String >,
2422 @get:JvmName(" responseValidation" ) val responseValidation: Boolean ,
2523 @get:JvmName(" maxRetries" ) val maxRetries: Int ,
24+ @get:JvmName(" apiKey" ) val apiKey: String ,
25+ @get:JvmName(" webhookSecret" ) val webhookSecret: String? ,
2626) {
2727
2828 fun toBuilder () = Builder ().from(this )
@@ -41,11 +41,11 @@ private constructor(
4141 class Builder {
4242
4343 private var httpClient: HttpClient ? = null
44- private var jsonMapper: JsonMapper ? = null
44+ private var jsonMapper: JsonMapper = jsonMapper()
4545 private var clock: Clock = Clock .systemUTC()
4646 private var baseUrl: String = PRODUCTION_URL
47- private var headers: MutableMap <String , MutableList < String >> = mutableMapOf ()
48- private var queryParams: MutableMap <String , MutableList < String >> = mutableMapOf ()
47+ private var headers: ListMultimap <String , String > = ArrayListMultimap .create ()
48+ private var queryParams: ListMultimap <String , String > = ArrayListMultimap .create ()
4949 private var responseValidation: Boolean = false
5050 private var maxRetries: Int = 2
5151 private var apiKey: String? = null
@@ -57,14 +57,8 @@ private constructor(
5757 jsonMapper = clientOptions.jsonMapper
5858 clock = clientOptions.clock
5959 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)
6862 responseValidation = clientOptions.responseValidation
6963 maxRetries = clientOptions.maxRetries
7064 apiKey = clientOptions.apiKey
@@ -75,47 +69,43 @@ private constructor(
7569
7670 fun jsonMapper (jsonMapper : JsonMapper ) = apply { this .jsonMapper = jsonMapper }
7771
78- fun baseUrl (baseUrl : String ) = apply { this .baseUrl = baseUrl }
79-
8072 fun clock (clock : Clock ) = apply { this .clock = clock }
8173
74+ fun baseUrl (baseUrl : String ) = apply { this .baseUrl = baseUrl }
75+
8276 fun headers (headers : Map <String , Iterable <String >>) = apply {
8377 this .headers.clear()
8478 putAllHeaders(headers)
8579 }
8680
87- fun putHeader (name : String , value : String ) = apply {
88- this .headers.getOrPut(name) { mutableListOf () }.add(value)
89- }
81+ fun putHeader (name : String , value : String ) = apply { headers.put(name, value) }
9082
9183 fun putHeaders (name : String , values : Iterable <String >) = apply {
92- this . headers.getOrPut (name) { mutableListOf () }.addAll( values)
84+ headers.putAll (name, values)
9385 }
9486
9587 fun putAllHeaders (headers : Map <String , Iterable <String >>) = apply {
96- headers.forEach(this ::putHeaders)
88+ headers.forEach(::putHeaders)
9789 }
9890
99- fun removeHeader (name : String ) = apply { this . headers.put (name, mutableListOf () ) }
91+ fun removeHeader (name : String ) = apply { headers.removeAll (name) }
10092
10193 fun queryParams (queryParams : Map <String , Iterable <String >>) = apply {
10294 this .queryParams.clear()
10395 putAllQueryParams(queryParams)
10496 }
10597
106- fun putQueryParam (name : String , value : String ) = apply {
107- this .queryParams.getOrPut(name) { mutableListOf () }.add(value)
108- }
98+ fun putQueryParam (name : String , value : String ) = apply { queryParams.put(name, value) }
10999
110100 fun putQueryParams (name : String , values : Iterable <String >) = apply {
111- this . queryParams.getOrPut (name) { mutableListOf () }.addAll( values)
101+ queryParams.putAll (name, values)
112102 }
113103
114104 fun putAllQueryParams (queryParams : Map <String , Iterable <String >>) = apply {
115- queryParams.forEach(this ::putQueryParams)
105+ queryParams.forEach(::putQueryParams)
116106 }
117107
118- fun removeQueryParam (name : String ) = apply { this . queryParams.put (name, mutableListOf () ) }
108+ fun removeQueryParam (name : String ) = apply { queryParams.removeAll (name) }
119109
120110 fun responseValidation (responseValidation : Boolean ) = apply {
121111 this .responseValidation = responseValidation
@@ -149,8 +139,8 @@ private constructor(
149139 if (! apiKey.isNullOrEmpty()) {
150140 headers.put(" Authorization" , apiKey)
151141 }
152- this .headers.forEach(headers::replaceValues)
153- this .queryParams.forEach(queryParams::replaceValues)
142+ this .headers.asMap(). forEach(headers::replaceValues)
143+ this .queryParams.asMap(). forEach(queryParams::replaceValues)
154144
155145 return ClientOptions (
156146 httpClient!! ,
@@ -161,15 +151,15 @@ private constructor(
161151 .maxRetries(maxRetries)
162152 .build()
163153 ),
164- jsonMapper ? : jsonMapper() ,
154+ jsonMapper,
165155 clock,
166156 baseUrl,
167- apiKey!! ,
168- webhookSecret,
169157 headers.toImmutable(),
170158 queryParams.toImmutable(),
171159 responseValidation,
172160 maxRetries,
161+ apiKey!! ,
162+ webhookSecret,
173163 )
174164 }
175165 }
0 commit comments