config.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package sentry
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/imgproxy/imgproxy/v3/ensure"
  6. "github.com/imgproxy/imgproxy/v3/env"
  7. "github.com/imgproxy/imgproxy/v3/version"
  8. )
  9. var (
  10. IMGPROXY_SENTRY_DSN = env.Describe("IMGPROXY_SENTRY_DSN", "string")
  11. IMGPROXY_SENTRY_RELEASE = env.Describe("IMGPROXY_SENTRY_RELEASE", "string")
  12. IMGPROXY_SENTRY_ENVIRONMENT = env.Describe("IMGPROXY_SENTRY_ENVIRONMENT", "string")
  13. )
  14. // Config holds Sentry-related configuration.
  15. type Config struct {
  16. DSN string
  17. Release string
  18. Environment string
  19. }
  20. // NewDefaultConfig creates a new Config instance with default values.
  21. func NewDefaultConfig() Config {
  22. return Config{
  23. DSN: "",
  24. Release: fmt.Sprintf("imgproxy@%s", version.Version),
  25. Environment: "production",
  26. }
  27. }
  28. // LoadConfigFromEnv creates a new Config instance loading values from environment variables.
  29. func LoadConfigFromEnv(c *Config) (*Config, error) {
  30. c = ensure.Ensure(c, NewDefaultConfig)
  31. err := errors.Join(
  32. env.String(&c.DSN, IMGPROXY_SENTRY_DSN),
  33. env.String(&c.Release, IMGPROXY_SENTRY_RELEASE),
  34. env.String(&c.Environment, IMGPROXY_SENTRY_ENVIRONMENT),
  35. )
  36. return c, err
  37. }
  38. // Validate checks if the configuration is valid
  39. func (c *Config) Validate() error {
  40. // No validation needed for sentry config currently
  41. return nil
  42. }