-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathOpenlayerOkHttpClient.kt
83 lines (60 loc) · 2.68 KB
/
OpenlayerOkHttpClient.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// File generated from our OpenAPI spec by Stainless.
package com.openlayer.api.client.okhttp
import com.fasterxml.jackson.databind.json.JsonMapper
import com.openlayer.api.client.OpenlayerClient
import com.openlayer.api.client.OpenlayerClientImpl
import com.openlayer.api.core.ClientOptions
import java.net.Proxy
import java.time.Clock
import java.time.Duration
class OpenlayerOkHttpClient private constructor() {
companion object {
@JvmStatic fun builder() = Builder()
@JvmStatic fun fromEnv(): OpenlayerClient = builder().fromEnv().build()
}
class Builder {
private var clientOptions: ClientOptions.Builder = ClientOptions.builder()
private var baseUrl: String = ClientOptions.PRODUCTION_URL
// default timeout for client is 1 minute
private var timeout: Duration = Duration.ofSeconds(60)
private var proxy: Proxy? = null
fun baseUrl(baseUrl: String) = apply {
clientOptions.baseUrl(baseUrl)
this.baseUrl = baseUrl
}
fun jsonMapper(jsonMapper: JsonMapper) = apply { clientOptions.jsonMapper(jsonMapper) }
fun clock(clock: Clock) = apply { clientOptions.clock(clock) }
fun headers(headers: Map<String, Iterable<String>>) = apply {
clientOptions.headers(headers)
}
fun putHeader(name: String, value: String) = apply { clientOptions.putHeader(name, value) }
fun putHeaders(name: String, values: Iterable<String>) = apply {
clientOptions.putHeaders(name, values)
}
fun putAllHeaders(headers: Map<String, Iterable<String>>) = apply {
clientOptions.putAllHeaders(headers)
}
fun removeHeader(name: String) = apply { clientOptions.removeHeader(name) }
fun timeout(timeout: Duration) = apply { this.timeout = timeout }
fun maxRetries(maxRetries: Int) = apply { clientOptions.maxRetries(maxRetries) }
fun proxy(proxy: Proxy) = apply { this.proxy = proxy }
fun responseValidation(responseValidation: Boolean) = apply {
clientOptions.responseValidation(responseValidation)
}
fun apiKey(apiKey: String?) = apply { clientOptions.apiKey(apiKey) }
fun fromEnv() = apply { clientOptions.fromEnv() }
fun build(): OpenlayerClient {
return OpenlayerClientImpl(
clientOptions
.httpClient(
OkHttpClient.builder()
.baseUrl(baseUrl)
.timeout(timeout)
.proxy(proxy)
.build()
)
.build()
)
}
}
}