MCPcopy
hub / github.com/elastic/go-elasticsearch / resolveOptions

Function resolveOptions

options.go:204–281  ·  view source on GitHub ↗

resolveOptions applies opts, resolves addresses, creates the transport via elastictransport.NewClient, and returns the resolved settings. metaHeaderSuffix is appended to the meta header (e.g. "hl=1" for TypedClient).

(opts []Option, metaHeaderSuffix string)

Source from the content-addressed store, hash-verified

202//
203// metaHeaderSuffix is appended to the meta header (e.g. "hl=1" for TypedClient).
204func resolveOptions(opts []Option, metaHeaderSuffix string) (*resolvedOptions, error) {
205 var co clientOptions
206 var errs []error
207 for _, opt := range opts {
208 if err := opt.apply(&co); err != nil {
209 errs = append(errs, err)
210 }
211 }
212 if len(errs) > 0 {
213 return nil, fmt.Errorf("client options: %w", errors.Join(errs...))
214 }
215
216 if len(co.addresses) > 0 && co.cloudID != "" {
217 return nil, errors.New("cannot create client: both Addresses and CloudID are set")
218 }
219
220 var addrs []string
221 switch {
222 case co.cloudID != "":
223 cloudAddr, err := addrFromCloudID(co.cloudID)
224 if err != nil {
225 return nil, fmt.Errorf("cannot create client: cannot parse CloudID: %s", err)
226 }
227 addrs = append(addrs, cloudAddr)
228 case len(co.addresses) > 0:
229 addrs = append(addrs, co.addresses...)
230 default:
231 addrs = addrsFromEnvironment()
232 }
233
234 urls, err := addrsToURLs(addrs)
235 if err != nil {
236 return nil, fmt.Errorf("cannot create client: %s", err)
237 }
238
239 if len(urls) == 0 {
240 u, parseErr := parseDefaultURL()
241 if parseErr != nil {
242 return nil, parseErr
243 }
244 urls = append(urls, u)
245 }
246
247 tpOpts := []elastictransport.Option{
248 elastictransport.WithUserAgent(userAgent),
249 elastictransport.WithURLs(urls...),
250 }
251
252 if urls[0].User != nil {
253 username := urls[0].User.Username()
254 password, _ := urls[0].User.Password()
255 tpOpts = append(tpOpts, elastictransport.WithBasicAuth(username, password))
256 }
257
258 tpOpts = append(tpOpts, co.transportOptions...)
259
260 tp, err := elastictransport.NewClient(tpOpts...)
261 if err != nil {

Callers 3

NewFunction · 0.85
NewBaseFunction · 0.85
NewTypedFunction · 0.85

Calls 8

addrFromCloudIDFunction · 0.85
addrsFromEnvironmentFunction · 0.85
addrsToURLsFunction · 0.85
parseDefaultURLFunction · 0.85
initMetaHeaderFunction · 0.85
JoinMethod · 0.80
UsernameMethod · 0.45
PasswordMethod · 0.45

Tested by

no test coverage detected