example_ua_set_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2022 InfluxData, Inc. All rights reserved.
  2. // Use of this source code is governed by MIT
  3. // license that can be found in the LICENSE file.
  4. package influxdb2_test
  5. import (
  6. "context"
  7. "fmt"
  8. "net/http"
  9. "github.com/influxdata/influxdb-client-go/v2"
  10. ihttp "github.com/influxdata/influxdb-client-go/v2/api/http"
  11. )
  12. // UserAgentSetter is the implementation of Doer interface for setting User-Agent header
  13. type UserAgentSetter struct {
  14. UserAgent string
  15. RequestDoer ihttp.Doer
  16. }
  17. // Do fulfills the Doer interface
  18. func (u *UserAgentSetter) Do(req *http.Request) (*http.Response, error) {
  19. // Set User-Agent header to request
  20. req.Header.Set("User-Agent", u.UserAgent)
  21. // Call original Doer to proceed with request
  22. return u.RequestDoer.Do(req)
  23. }
  24. func ExampleClient_customUserAgentHeader() {
  25. // Set custom Doer to HTTPOptions
  26. opts := influxdb2.DefaultOptions()
  27. opts.HTTPOptions().SetHTTPDoer(&UserAgentSetter{
  28. UserAgent: "NetMonitor/1.1",
  29. RequestDoer: http.DefaultClient,
  30. })
  31. //Create client with customized options
  32. client := influxdb2.NewClientWithOptions("http://localhost:8086", "my-token", opts)
  33. // Always close client at the end
  34. defer client.Close()
  35. // Issue a call with custom User-Agent header
  36. resp, err := client.Ping(context.Background())
  37. if err != nil {
  38. panic(err)
  39. }
  40. if resp {
  41. fmt.Println("Server is up")
  42. } else {
  43. fmt.Println("Server is down")
  44. }
  45. }