config.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // config.go is just a shortcut for common.Config which helps to
  2. // avoid importing of the `common` package directly.
  3. package transport
  4. import (
  5. "github.com/imgproxy/imgproxy/v3/config"
  6. "github.com/imgproxy/imgproxy/v3/ensure"
  7. "github.com/imgproxy/imgproxy/v3/fetcher/transport/azure"
  8. "github.com/imgproxy/imgproxy/v3/fetcher/transport/fs"
  9. "github.com/imgproxy/imgproxy/v3/fetcher/transport/gcs"
  10. "github.com/imgproxy/imgproxy/v3/fetcher/transport/generichttp"
  11. "github.com/imgproxy/imgproxy/v3/fetcher/transport/s3"
  12. "github.com/imgproxy/imgproxy/v3/fetcher/transport/swift"
  13. )
  14. // Config represents configuration of the transport package
  15. type Config struct {
  16. HTTP generichttp.Config
  17. Local fs.Config
  18. ABSEnabled bool
  19. ABS azure.Config
  20. GCSEnabled bool
  21. GCS gcs.Config
  22. S3Enabled bool
  23. S3 s3.Config
  24. SwiftEnabled bool
  25. Swift swift.Config
  26. }
  27. // NewDefaultConfig returns a new default transport configuration
  28. func NewDefaultConfig() Config {
  29. return Config{
  30. HTTP: generichttp.NewDefaultConfig(),
  31. Local: fs.NewDefaultConfig(),
  32. ABSEnabled: false,
  33. ABS: azure.NewDefaultConfig(),
  34. GCSEnabled: false,
  35. GCS: gcs.NewDefaultConfig(),
  36. S3Enabled: false,
  37. S3: s3.NewDefaultConfig(),
  38. SwiftEnabled: false,
  39. Swift: swift.NewDefaultConfig(),
  40. }
  41. }
  42. // LoadConfigFromEnv loads transport configuration from environment variables
  43. func LoadConfigFromEnv(c *Config) (*Config, error) {
  44. c = ensure.Ensure(c, NewDefaultConfig)
  45. var err error
  46. if _, err = generichttp.LoadConfigFromEnv(&c.HTTP); err != nil {
  47. return nil, err
  48. }
  49. if _, err = fs.LoadConfigFromEnv(&c.Local); err != nil {
  50. return nil, err
  51. }
  52. if _, err = azure.LoadConfigFromEnv(&c.ABS); err != nil {
  53. return nil, err
  54. }
  55. if _, err = gcs.LoadConfigFromEnv(&c.GCS); err != nil {
  56. return nil, err
  57. }
  58. if _, err = s3.LoadConfigFromEnv(&c.S3); err != nil {
  59. return nil, err
  60. }
  61. if _, err = swift.LoadConfigFromEnv(&c.Swift); err != nil {
  62. return nil, err
  63. }
  64. c.ABSEnabled = config.ABSEnabled
  65. c.GCSEnabled = config.GCSEnabled
  66. c.S3Enabled = config.S3Enabled
  67. c.SwiftEnabled = config.SwiftEnabled
  68. return c, nil
  69. }
  70. func (c *Config) Validate() error {
  71. // We won't validate upstream config here: they might not be used
  72. return nil
  73. }