func GetAndValidateConfig()

in config/config.go [61:86]


func GetAndValidateConfig(cfg *common.Config) (*Config, error) {
	c := DefaultConfig
	if err := cfg.Unpack(&c); err != nil {
		return nil, fmt.Errorf("error in config file: %v", err)
	}

	if d, _ := time.ParseDuration("10m"); c.Subscription.RetentionDuration < d {
		return nil, fmt.Errorf("retention_duration cannot be shorter than 10 minutes")
	}

	if d, _ := time.ParseDuration("168h"); c.Subscription.RetentionDuration > d {
		return nil, fmt.Errorf("retention_duration cannot be longer than 7 days")
	}

	if cxns := c.Subscription.ConnectionPoolSize; cxns < 1 {
		return nil, fmt.Errorf("Connection pool size must be >= 1, got: %d", cxns)
	}

	if c.CredentialsFile != "" {
		if _, err := os.Stat(c.CredentialsFile); os.IsNotExist(err) {
			return nil, fmt.Errorf("cannot find the credentials_file %q", c.CredentialsFile)
		}
	}

	return &c, nil
}