Skip to content

Commit 840c198

Browse files
authored
Merge pull request #28 from stacklok/create-http-client
Allow users to specify a subset of options
2 parents 955d944 + 0b10743 commit 840c198

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

pkg/client/client.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,20 @@ func New() *Trusty {
6868
return NewWithOptions(opts)
6969
}
7070

71-
// NewWithOptions returns a new client with the dspecified options set
71+
// NewWithOptions returns a new client with the specified options set
7272
func NewWithOptions(opts Options) *Trusty {
73+
if opts.BaseURL == "" {
74+
opts.BaseURL = DefaultOptions.BaseURL
75+
}
76+
77+
if opts.Workers == 0 {
78+
opts.Workers = DefaultOptions.Workers
79+
}
80+
81+
if opts.HttpClient == nil {
82+
opts.HttpClient = khttp.NewAgent().WithMaxParallel(opts.Workers).WithFailOnHTTPError(true)
83+
}
84+
7385
return &Trusty{
7486
Options: opts,
7587
}

pkg/client/client_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,58 @@ func buildReader(s string) io.ReadCloser {
6262
return io.NopCloser(stringReader)
6363
}
6464

65+
func TestNewWithOptions(t *testing.T) {
66+
t.Parallel()
67+
68+
for _, tc := range []struct {
69+
name string
70+
constructorOptions Options
71+
usedOptions Options
72+
}{
73+
{
74+
name: "defaults workers",
75+
constructorOptions: Options{
76+
BaseURL: "https://test.com",
77+
},
78+
usedOptions: Options{
79+
BaseURL: "https://test.com",
80+
Workers: DefaultOptions.Workers,
81+
},
82+
},
83+
{
84+
name: "defaults base URL",
85+
constructorOptions: Options{
86+
Workers: 1,
87+
},
88+
usedOptions: Options{
89+
BaseURL: DefaultOptions.BaseURL,
90+
Workers: 1,
91+
},
92+
},
93+
{
94+
name: "defaults http client",
95+
constructorOptions: Options{
96+
Workers: 1,
97+
BaseURL: "https://test.com",
98+
},
99+
usedOptions: Options{
100+
Workers: 1,
101+
BaseURL: "https://test.com",
102+
},
103+
},
104+
} {
105+
tc := tc
106+
t.Run(tc.name, func(t *testing.T) {
107+
t.Parallel()
108+
client := NewWithOptions(tc.constructorOptions)
109+
110+
require.Equal(t, tc.usedOptions.BaseURL, client.Options.BaseURL)
111+
require.Equal(t, tc.usedOptions.Workers, client.Options.Workers)
112+
require.NotNil(t, client.Options.HttpClient)
113+
})
114+
}
115+
}
116+
65117
func TestReport(t *testing.T) {
66118
t.Parallel()
67119
respBody := `{"package_name":"requestts","package_type":"pypi"}`

0 commit comments

Comments
 (0)