forked from jfrog/jfrog-client-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
clientbuilder.go
78 lines (66 loc) · 2.4 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
package jfroghttpclient
import (
"context"
"github.com/shahiinn/jfrog-client-go/http/httpclient"
"time"
)
func JfrogClientBuilder() *jfrogHttpClientBuilder {
builder := &jfrogHttpClientBuilder{}
builder.SetTimeout(httpclient.DefaultHttpTimeout)
return builder
}
type jfrogHttpClientBuilder struct {
certificatesDirPath string
insecureTls bool
ctx context.Context
retries int
preRequestInterceptors []PreRequestInterceptorFunc
clientCertPath string
clientCertKeyPath string
timeout time.Duration
}
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) AppendPreRequestInterceptor(interceptor PreRequestInterceptorFunc) *jfrogHttpClientBuilder {
builder.preRequestInterceptors = append(builder.preRequestInterceptors, interceptor)
return builder
}
func (builder *jfrogHttpClientBuilder) SetTimeout(timeout time.Duration) *jfrogHttpClientBuilder {
builder.timeout = timeout
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).
SetTimeout(builder.timeout).
SetRetries(builder.retries).
Build()
return
}