1
0

config.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package errorreport
  2. import (
  3. "errors"
  4. "github.com/imgproxy/imgproxy/v3/ensure"
  5. "github.com/imgproxy/imgproxy/v3/errorreport/airbrake"
  6. "github.com/imgproxy/imgproxy/v3/errorreport/bugsnag"
  7. "github.com/imgproxy/imgproxy/v3/errorreport/honeybadger"
  8. "github.com/imgproxy/imgproxy/v3/errorreport/sentry"
  9. )
  10. // Config holds error reporting-related configuration for all providers.
  11. type Config struct {
  12. Airbrake airbrake.Config
  13. Bugsnag bugsnag.Config
  14. Honeybadger honeybadger.Config
  15. Sentry sentry.Config
  16. }
  17. // NewDefaultConfig creates a new Config instance with default values.
  18. func NewDefaultConfig() Config {
  19. return Config{
  20. Airbrake: airbrake.NewDefaultConfig(),
  21. Bugsnag: bugsnag.NewDefaultConfig(),
  22. Honeybadger: honeybadger.NewDefaultConfig(),
  23. Sentry: sentry.NewDefaultConfig(),
  24. }
  25. }
  26. // LoadConfigFromEnv creates a new Config instance loading values from environment variables.
  27. func LoadConfigFromEnv(c *Config) (*Config, error) {
  28. c = ensure.Ensure(c, NewDefaultConfig)
  29. var airbErr, bugErr, honeyErr, sentErr error
  30. _, airbErr = airbrake.LoadConfigFromEnv(&c.Airbrake)
  31. _, bugErr = bugsnag.LoadConfigFromEnv(&c.Bugsnag)
  32. _, honeyErr = honeybadger.LoadConfigFromEnv(&c.Honeybadger)
  33. _, sentErr = sentry.LoadConfigFromEnv(&c.Sentry)
  34. err := errors.Join(airbErr, bugErr, honeyErr, sentErr)
  35. return c, err
  36. }
  37. // Validate checks if the configuration is valid
  38. func (c *Config) Validate() error {
  39. return errors.Join(
  40. c.Airbrake.Validate(),
  41. c.Bugsnag.Validate(),
  42. c.Honeybadger.Validate(),
  43. c.Sentry.Validate(),
  44. )
  45. }