config.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package airbrake
  2. import (
  3. "errors"
  4. "github.com/imgproxy/imgproxy/v3/ensure"
  5. "github.com/imgproxy/imgproxy/v3/env"
  6. )
  7. var (
  8. IMGPROXY_AIRBRAKE_PROJECT_ID = env.Describe("IMGPROXY_AIRBRAKE_PROJECT_ID", "integer")
  9. IMGPROXY_AIRBRAKE_PROJECT_KEY = env.Describe("IMGPROXY_AIRBRAKE_PROJECT_KEY", "string")
  10. IMGPROXY_AIRBRAKE_ENV = env.Describe("IMGPROXY_AIRBRAKE_ENV", "string")
  11. )
  12. // Config holds Airbrake-related configuration.
  13. type Config struct {
  14. ProjectID int
  15. ProjectKey string
  16. Env string
  17. }
  18. // NewDefaultConfig creates a new Config instance with default values.
  19. func NewDefaultConfig() Config {
  20. return Config{
  21. ProjectID: 0,
  22. ProjectKey: "",
  23. Env: "production",
  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. err := errors.Join(
  30. env.Int(&c.ProjectID, IMGPROXY_AIRBRAKE_PROJECT_ID),
  31. env.String(&c.ProjectKey, IMGPROXY_AIRBRAKE_PROJECT_KEY),
  32. env.String(&c.Env, IMGPROXY_AIRBRAKE_ENV),
  33. )
  34. return c, err
  35. }
  36. // Validate checks if the configuration is valid
  37. func (c *Config) Validate() error {
  38. // No validation needed for airbrake config currently
  39. return nil
  40. }