| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Package config provides the main configuration
- package config
- import (
- "golang.org/x/time/rate"
- "time"
- )
- // Defines default config settings
- const (
- DefaultListenHTTP = ":80"
- DefaultMessageBufferDuration = 12 * time.Hour
- DefaultKeepaliveInterval = 30 * time.Second
- DefaultManagerInterval = time.Minute
- )
- // Defines the max number of requests, here:
- // 50 requests bucket, replenished at a rate of 1 per second
- var (
- defaultRequestLimit = rate.Every(time.Second)
- defaultRequestLimitBurst = 50
- defaultSubscriptionLimit = 30 // per visitor
- )
- // Config is the main config struct for the application. Use New to instantiate a default config struct.
- type Config struct {
- ListenHTTP string
- FirebaseKeyFile string
- MessageBufferDuration time.Duration
- KeepaliveInterval time.Duration
- ManagerInterval time.Duration
- RequestLimit rate.Limit
- RequestLimitBurst int
- SubscriptionLimit int
- }
- // New instantiates a default new config
- func New(listenHTTP string) *Config {
- return &Config{
- ListenHTTP: listenHTTP,
- FirebaseKeyFile: "",
- MessageBufferDuration: DefaultMessageBufferDuration,
- KeepaliveInterval: DefaultKeepaliveInterval,
- ManagerInterval: DefaultManagerInterval,
- RequestLimit: defaultRequestLimit,
- RequestLimitBurst: defaultRequestLimitBurst,
- SubscriptionLimit: defaultSubscriptionLimit,
- }
- }
|