152
// NewHTTPClient creates a new [HTTPClient] from provided [HTTPClientOptions].
153
// BaseURL and Service are required.
154
>
func NewHTTPClient(options HTTPClientOptions) (*HTTPClient, error) {
client.go
155
>
if options.HTTPCaller == nil {
156
>
options.HTTPCaller = http.DefaultClient.Do
157
>
}
158
>
if options.BaseURL == "" {
159
return nil, errors.New("empty BaseURL")
160
}
162
return nil, errors.New("empty Service")
163
}
165
>
var err error
166
>
baseURL, err = url.Parse(options.BaseURL)
167
>
if err != nil {
168
return nil, err
169
}
170
>
if baseURL.Scheme != "http" && baseURL.Scheme != "https" {
client.go
171
return nil, fmt.Errorf("invalid URL scheme: %s", baseURL.Scheme)
172
}
173
>
if options.Serializer == nil {
client.go
174
options.Serializer = nexus.DefaultSerializer()
175
}
176
>
if options.FailureConverter == nil {
client.go
177
options.FailureConverter = DefaultFailureConverter()
178
}
180
>
baseHTTPClient: baseHTTPClient{
181
>
serializer: options.Serializer,
182
>
failureConverter: options.FailureConverter,
183
>
httpCaller: options.HTTPCaller,
184
>
},
185
>
serviceBaseURL: baseURL,
186
>
service: options.Service,
187
>
}, nil
188
}
189