/
clientbuilder.go
101 lines (85 loc) · 3.21 KB
/
clientbuilder.go
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package jfroghttpclient
import (
"context"
"net/http"
"time"
"github.com/jfrog/jfrog-client-go/http/httpclient"
)
func JfrogClientBuilder() *jfrogHttpClientBuilder {
builder := &jfrogHttpClientBuilder{}
builder.SetDialTimeout(httpclient.DefaultDialTimeout)
return builder
}
type jfrogHttpClientBuilder struct {
certificatesDirPath string
insecureTls bool
ctx context.Context
retries int
retryWaitTimMilliSecs int
preRequestInterceptors []PreRequestInterceptorFunc
clientCertPath string
clientCertKeyPath string
dialTimeout time.Duration
overallRequestTimeout time.Duration
httpClient *http.Client
}
func (builder *jfrogHttpClientBuilder) SetCertificatesPath(certificatesPath string) *jfrogHttpClientBuilder {
builder.certificatesDirPath = certificatesPath
return builder
}
func (builder *jfrogHttpClientBuilder) SetInsecureTls(insecureTls bool) *jfrogHttpClientBuilder {
builder.insecureTls = insecureTls
return builder
}
func (builder *jfrogHttpClientBuilder) SetClientCertPath(clientCertPath string) *jfrogHttpClientBuilder {
builder.clientCertPath = clientCertPath
return builder
}
func (builder *jfrogHttpClientBuilder) SetClientCertKeyPath(clientCertKeyPath string) *jfrogHttpClientBuilder {
builder.clientCertKeyPath = clientCertKeyPath
return builder
}
func (builder *jfrogHttpClientBuilder) SetContext(ctx context.Context) *jfrogHttpClientBuilder {
builder.ctx = ctx
return builder
}
func (builder *jfrogHttpClientBuilder) SetRetries(retries int) *jfrogHttpClientBuilder {
builder.retries = retries
return builder
}
func (builder *jfrogHttpClientBuilder) SetRetryWaitMilliSecs(retryWaitMilliSecs int) *jfrogHttpClientBuilder {
builder.retryWaitTimMilliSecs = retryWaitMilliSecs
return builder
}
func (builder *jfrogHttpClientBuilder) AppendPreRequestInterceptor(interceptor PreRequestInterceptorFunc) *jfrogHttpClientBuilder {
builder.preRequestInterceptors = append(builder.preRequestInterceptors, interceptor)
return builder
}
func (builder *jfrogHttpClientBuilder) SetDialTimeout(dialTimeout time.Duration) *jfrogHttpClientBuilder {
builder.dialTimeout = dialTimeout
return builder
}
func (builder *jfrogHttpClientBuilder) SetOverallRequestTimeout(overallRequestTimeout time.Duration) *jfrogHttpClientBuilder {
builder.overallRequestTimeout = overallRequestTimeout
return builder
}
func (builder *jfrogHttpClientBuilder) SetHttpClient(httpClient *http.Client) *jfrogHttpClientBuilder {
builder.httpClient = httpClient
return builder
}
func (builder *jfrogHttpClientBuilder) Build() (rtHttpClient *JfrogHttpClient, err error) {
rtHttpClient = &JfrogHttpClient{preRequestInterceptors: builder.preRequestInterceptors}
rtHttpClient.httpClient, err = httpclient.ClientBuilder().
SetCertificatesPath(builder.certificatesDirPath).
SetInsecureTls(builder.insecureTls).
SetClientCertPath(builder.clientCertPath).
SetClientCertKeyPath(builder.clientCertKeyPath).
SetContext(builder.ctx).
SetDialTimeout(builder.dialTimeout).
SetOverallRequestTimeout(builder.overallRequestTimeout).
SetRetries(builder.retries).
SetRetryWaitMilliSecs(builder.retryWaitTimMilliSecs).
SetHttpClient(builder.httpClient).
Build()
return
}