config.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package imgproxy
  2. import (
  3. "github.com/imgproxy/imgproxy/v3/auximageprovider"
  4. "github.com/imgproxy/imgproxy/v3/ensure"
  5. "github.com/imgproxy/imgproxy/v3/fetcher"
  6. processinghandler "github.com/imgproxy/imgproxy/v3/handlers/processing"
  7. "github.com/imgproxy/imgproxy/v3/handlers/stream"
  8. "github.com/imgproxy/imgproxy/v3/headerwriter"
  9. "github.com/imgproxy/imgproxy/v3/semaphores"
  10. "github.com/imgproxy/imgproxy/v3/server"
  11. )
  12. // Config represents an instance configuration
  13. type Config struct {
  14. HeaderWriter headerwriter.Config
  15. Semaphores semaphores.Config
  16. FallbackImage auximageprovider.StaticConfig
  17. WatermarkImage auximageprovider.StaticConfig
  18. Fetcher fetcher.Config
  19. ProcessingHandler processinghandler.Config
  20. StreamHandler stream.Config
  21. Server server.Config
  22. }
  23. // NewDefaultConfig creates a new default configuration
  24. func NewDefaultConfig() Config {
  25. return Config{
  26. HeaderWriter: headerwriter.NewDefaultConfig(),
  27. Semaphores: semaphores.NewDefaultConfig(),
  28. FallbackImage: auximageprovider.NewDefaultStaticConfig(),
  29. WatermarkImage: auximageprovider.NewDefaultStaticConfig(),
  30. Fetcher: fetcher.NewDefaultConfig(),
  31. ProcessingHandler: processinghandler.NewDefaultConfig(),
  32. StreamHandler: stream.NewDefaultConfig(),
  33. Server: server.NewDefaultConfig(),
  34. }
  35. }
  36. // LoadConfigFromEnv loads configuration from environment variables
  37. func LoadConfigFromEnv(c *Config) (*Config, error) {
  38. c = ensure.Ensure(c, NewDefaultConfig)
  39. var err error
  40. if _, err = server.LoadConfigFromEnv(&c.Server); err != nil {
  41. return nil, err
  42. }
  43. if _, err = auximageprovider.LoadFallbackStaticConfigFromEnv(&c.FallbackImage); err != nil {
  44. return nil, err
  45. }
  46. if _, err = auximageprovider.LoadWatermarkStaticConfigFromEnv(&c.WatermarkImage); err != nil {
  47. return nil, err
  48. }
  49. if _, err = headerwriter.LoadConfigFromEnv(&c.HeaderWriter); err != nil {
  50. return nil, err
  51. }
  52. if _, err = semaphores.LoadConfigFromEnv(&c.Semaphores); err != nil {
  53. return nil, err
  54. }
  55. if _, err = fetcher.LoadConfigFromEnv(&c.Fetcher); err != nil {
  56. return nil, err
  57. }
  58. if _, err = processinghandler.LoadConfigFromEnv(&c.ProcessingHandler); err != nil {
  59. return nil, err
  60. }
  61. if _, err = stream.LoadConfigFromEnv(&c.StreamHandler); err != nil {
  62. return nil, err
  63. }
  64. return c, nil
  65. }