aboutsummaryrefslogtreecommitdiff
path: root/vendor/gopkg.in/segmentio/analytics-go.v3/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/segmentio/analytics-go.v3/config.go')
-rw-r--r--vendor/gopkg.in/segmentio/analytics-go.v3/config.go173
1 files changed, 0 insertions, 173 deletions
diff --git a/vendor/gopkg.in/segmentio/analytics-go.v3/config.go b/vendor/gopkg.in/segmentio/analytics-go.v3/config.go
deleted file mode 100644
index c167757..0000000
--- a/vendor/gopkg.in/segmentio/analytics-go.v3/config.go
+++ /dev/null
@@ -1,173 +0,0 @@
-package analytics
-
-import (
- "net/http"
- "time"
-
- "github.com/segmentio/backo-go"
- "github.com/xtgo/uuid"
-)
-
-// Instances of this type carry the different configuration options that may
-// be set when instantiating a client.
-//
-// Each field's zero-value is either meaningful or interpreted as using the
-// default value defined by the library.
-type Config struct {
-
- // The endpoint to which the client connect and send their messages, set to
- // `DefaultEndpoint` by default.
- Endpoint string
-
- // The flushing interval of the client. Messages will be sent when they've
- // been queued up to the maximum batch size or when the flushing interval
- // timer triggers.
- Interval time.Duration
-
- // The HTTP transport used by the client, this allows an application to
- // redefine how requests are being sent at the HTTP level (for example,
- // to change the connection pooling policy).
- // If none is specified the client uses `http.DefaultTransport`.
- Transport http.RoundTripper
-
- // The logger used by the client to output info or error messages when that
- // are generated by background operations.
- // If none is specified the client uses a standard logger that outputs to
- // `os.Stderr`.
- Logger Logger
-
- // The callback object that will be used by the client to notify the
- // application when messages sends to the backend API succeeded or failed.
- Callback Callback
-
- // The maximum number of messages that will be sent in one API call.
- // Messages will be sent when they've been queued up to the maximum batch
- // size or when the flushing interval timer triggers.
- // Note that the API will still enforce a 500KB limit on each HTTP request
- // which is independent from the number of embedded messages.
- BatchSize int
-
- // When set to true the client will send more frequent and detailed messages
- // to its logger.
- Verbose bool
-
- // The default context set on each message sent by the client.
- DefaultContext *Context
-
- // The retry policy used by the client to resend requests that have failed.
- // The function is called with how many times the operation has been retried
- // and is expected to return how long the client should wait before trying
- // again.
- // If not set the client will fallback to use a default retry policy.
- RetryAfter func(int) time.Duration
-
- // A function called by the client to generate unique message identifiers.
- // The client uses a UUID generator if none is provided.
- // This field is not exported and only exposed internally to let unit tests
- // mock the id generation.
- uid func() string
-
- // A function called by the client to get the current time, `time.Now` is
- // used by default.
- // This field is not exported and only exposed internally to let unit tests
- // mock the current time.
- now func() time.Time
-
- // The maximum number of goroutines that will be spawned by a client to send
- // requests to the backend API.
- // This field is not exported and only exposed internally to let unit tests
- // mock the current time.
- maxConcurrentRequests int
-}
-
-// This constant sets the default endpoint to which client instances send
-// messages if none was explictly set.
-const DefaultEndpoint = "https://api.segment.io"
-
-// This constant sets the default flush interval used by client instances if
-// none was explicitly set.
-const DefaultInterval = 5 * time.Second
-
-// This constant sets the default batch size used by client instances if none
-// was explicitly set.
-const DefaultBatchSize = 250
-
-// Verifies that fields that don't have zero-values are set to valid values,
-// returns an error describing the problem if a field was invalid.
-func (c *Config) validate() error {
- if c.Interval < 0 {
- return ConfigError{
- Reason: "negative time intervals are not supported",
- Field: "Interval",
- Value: c.Interval,
- }
- }
-
- if c.BatchSize < 0 {
- return ConfigError{
- Reason: "negative batch sizes are not supported",
- Field: "BatchSize",
- Value: c.BatchSize,
- }
- }
-
- return nil
-}
-
-// Given a config object as argument the function will set all zero-values to
-// their defaults and return the modified object.
-func makeConfig(c Config) Config {
- if len(c.Endpoint) == 0 {
- c.Endpoint = DefaultEndpoint
- }
-
- if c.Interval == 0 {
- c.Interval = DefaultInterval
- }
-
- if c.Transport == nil {
- c.Transport = http.DefaultTransport
- }
-
- if c.Logger == nil {
- c.Logger = newDefaultLogger()
- }
-
- if c.BatchSize == 0 {
- c.BatchSize = DefaultBatchSize
- }
-
- if c.DefaultContext == nil {
- c.DefaultContext = &Context{}
- }
-
- if c.RetryAfter == nil {
- c.RetryAfter = backo.DefaultBacko().Duration
- }
-
- if c.uid == nil {
- c.uid = uid
- }
-
- if c.now == nil {
- c.now = time.Now
- }
-
- if c.maxConcurrentRequests == 0 {
- c.maxConcurrentRequests = 1000
- }
-
- // We always overwrite the 'library' field of the default context set on the
- // client because we want this information to be accurate.
- c.DefaultContext.Library = LibraryInfo{
- Name: "analytics-go",
- Version: Version,
- }
- return c
-}
-
-// This function returns a string representation of a UUID, it's the default
-// function used for generating unique IDs.
-func uid() string {
- return uuid.NewRandom().String()
-}