config.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package datahub
  2. import (
  3. "fmt"
  4. "math"
  5. "net/http"
  6. "runtime"
  7. "time"
  8. )
  9. type Config struct {
  10. UserAgent string
  11. CompressorType CompressorType
  12. EnableBinary bool
  13. EnableSchemaRegistry bool
  14. HttpClient *http.Client
  15. }
  16. func NewDefaultConfig() *Config {
  17. return &Config{
  18. UserAgent: DefaultUserAgent(),
  19. CompressorType: NOCOMPRESS,
  20. EnableBinary: true,
  21. EnableSchemaRegistry: false,
  22. HttpClient: DefaultHttpClient(),
  23. }
  24. }
  25. // DefaultHttpClient returns a default HTTP client with sensible values.
  26. func DefaultHttpClient() *http.Client {
  27. return &http.Client{
  28. Transport: &http.Transport{
  29. DialContext: TraceDialContext(10 * time.Second),
  30. Proxy: http.ProxyFromEnvironment,
  31. MaxIdleConns: math.MaxInt32,
  32. MaxIdleConnsPerHost: math.MaxInt32,
  33. MaxConnsPerHost: math.MaxInt32,
  34. IdleConnTimeout: 30 * time.Second,
  35. TLSHandshakeTimeout: 10 * time.Second,
  36. ExpectContinueTimeout: 1 * time.Second,
  37. ResponseHeaderTimeout: 100 * time.Second,
  38. },
  39. }
  40. }
  41. // DefaultUserAgent returns a default user agent
  42. func DefaultUserAgent() string {
  43. return fmt.Sprintf("godatahub/%s golang/%s %s", DATAHUB_SDK_VERSION, runtime.Version(), runtime.GOOS)
  44. }