config.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package swift
  2. import (
  3. "errors"
  4. "time"
  5. "github.com/imgproxy/imgproxy/v3/ensure"
  6. "github.com/imgproxy/imgproxy/v3/env"
  7. )
  8. var (
  9. IMGPROXY_SWIFT_USERNAME = env.Describe("IMGPROXY_SWIFT_USERNAME", "string")
  10. IMGPROXY_SWIFT_API_KEY = env.Describe("IMGPROXY_SWIFT_API_KEY", "string")
  11. IMGPROXY_SWIFT_AUTH_URL = env.Describe("IMGPROXY_SWIFT_AUTH_URL", "string")
  12. IMGPROXY_SWIFT_DOMAIN = env.Describe("IMGPROXY_SWIFT_DOMAIN", "string")
  13. IMGPROXY_SWIFT_TENANT = env.Describe("IMGPROXY_SWIFT_TENANT", "string")
  14. IMGPROXY_SWIFT_AUTH_VERSION = env.Describe("IMGPROXY_SWIFT_AUTH_VERSION", "number")
  15. IMGPROXY_SWIFT_CONNECT_TIMEOUT_SECONDS = env.Describe("IMGPROXY_SWIFT_CONNECT_TIMEOUT_SECONDS", "number")
  16. IMGPROXY_SWIFT_TIMEOUT_SECONDS = env.Describe("IMGPROXY_SWIFT_TIMEOUT_SECONDS", "number")
  17. )
  18. // Config holds the configuration for Swift transport
  19. type Config struct {
  20. Username string // Username for Swift authentication
  21. APIKey string // API key for Swift authentication
  22. AuthURL string // Authentication URL for Swift
  23. Domain string // Domain for Swift authentication
  24. Tenant string // Tenant for Swift authentication
  25. AuthVersion int // Authentication version for Swift
  26. ConnectTimeout time.Duration // Connection timeout for Swift
  27. Timeout time.Duration // Request timeout for Swift
  28. }
  29. // NewDefaultConfig returns a new default configuration for Swift transport
  30. func NewDefaultConfig() Config {
  31. return Config{
  32. Username: "",
  33. APIKey: "",
  34. AuthURL: "",
  35. Domain: "",
  36. Tenant: "",
  37. AuthVersion: 0,
  38. ConnectTimeout: 10 * time.Second,
  39. Timeout: 60 * time.Second,
  40. }
  41. }
  42. // LoadConfigFromEnv loads configuration from the global config package
  43. func LoadConfigFromEnv(c *Config) (*Config, error) {
  44. c = ensure.Ensure(c, NewDefaultConfig)
  45. err := errors.Join(
  46. env.String(&c.Username, IMGPROXY_SWIFT_USERNAME),
  47. env.String(&c.APIKey, IMGPROXY_SWIFT_API_KEY),
  48. env.String(&c.AuthURL, IMGPROXY_SWIFT_AUTH_URL),
  49. env.String(&c.Domain, IMGPROXY_SWIFT_DOMAIN),
  50. env.String(&c.Tenant, IMGPROXY_SWIFT_TENANT),
  51. env.Int(&c.AuthVersion, IMGPROXY_SWIFT_AUTH_VERSION),
  52. env.Duration(&c.ConnectTimeout, IMGPROXY_SWIFT_CONNECT_TIMEOUT_SECONDS),
  53. env.Duration(&c.Timeout, IMGPROXY_SWIFT_TIMEOUT_SECONDS),
  54. )
  55. return c, err
  56. }
  57. // Validate checks the configuration for errors
  58. func (c *Config) Validate() error {
  59. return nil
  60. }