config.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Package config provides the main configuration
  2. package config
  3. import (
  4. "golang.org/x/time/rate"
  5. "time"
  6. )
  7. // Defines default config settings
  8. const (
  9. DefaultListenHTTP = ":80"
  10. DefaultMessageBufferDuration = 12 * time.Hour
  11. DefaultKeepaliveInterval = 30 * time.Second
  12. DefaultManagerInterval = time.Minute
  13. )
  14. // Defines the max number of requests, here:
  15. // 50 requests bucket, replenished at a rate of 1 per second
  16. var (
  17. defaultRequestLimit = rate.Every(time.Second)
  18. defaultRequestLimitBurst = 50
  19. defaultSubscriptionLimit = 30 // per visitor
  20. )
  21. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  22. type Config struct {
  23. ListenHTTP string
  24. FirebaseKeyFile string
  25. MessageBufferDuration time.Duration
  26. KeepaliveInterval time.Duration
  27. ManagerInterval time.Duration
  28. RequestLimit rate.Limit
  29. RequestLimitBurst int
  30. SubscriptionLimit int
  31. }
  32. // New instantiates a default new config
  33. func New(listenHTTP string) *Config {
  34. return &Config{
  35. ListenHTTP: listenHTTP,
  36. FirebaseKeyFile: "",
  37. MessageBufferDuration: DefaultMessageBufferDuration,
  38. KeepaliveInterval: DefaultKeepaliveInterval,
  39. ManagerInterval: DefaultManagerInterval,
  40. RequestLimit: defaultRequestLimit,
  41. RequestLimitBurst: defaultRequestLimitBurst,
  42. SubscriptionLimit: defaultSubscriptionLimit,
  43. }
  44. }