config.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. streamhandler "github.com/imgproxy/imgproxy/v3/handlers/stream"
  8. "github.com/imgproxy/imgproxy/v3/security"
  9. "github.com/imgproxy/imgproxy/v3/server"
  10. "github.com/imgproxy/imgproxy/v3/workers"
  11. )
  12. // HandlerConfigs holds the configurations for imgproxy handlers
  13. type HandlerConfigs struct {
  14. Processing processinghandler.Config
  15. Stream streamhandler.Config
  16. }
  17. // Config represents an instance configuration
  18. type Config struct {
  19. Workers workers.Config
  20. FallbackImage auximageprovider.StaticConfig
  21. WatermarkImage auximageprovider.StaticConfig
  22. Fetcher fetcher.Config
  23. Handlers HandlerConfigs
  24. Server server.Config
  25. Security security.Config
  26. }
  27. // NewDefaultConfig creates a new default configuration
  28. func NewDefaultConfig() Config {
  29. return Config{
  30. Workers: workers.NewDefaultConfig(),
  31. FallbackImage: auximageprovider.NewDefaultStaticConfig(),
  32. WatermarkImage: auximageprovider.NewDefaultStaticConfig(),
  33. Fetcher: fetcher.NewDefaultConfig(),
  34. Handlers: HandlerConfigs{
  35. Processing: processinghandler.NewDefaultConfig(),
  36. Stream: streamhandler.NewDefaultConfig(),
  37. },
  38. Server: server.NewDefaultConfig(),
  39. Security: security.NewDefaultConfig(),
  40. }
  41. }
  42. // LoadConfigFromEnv loads configuration from environment variables
  43. func LoadConfigFromEnv(c *Config) (*Config, error) {
  44. c = ensure.Ensure(c, NewDefaultConfig)
  45. var err error
  46. if _, err = server.LoadConfigFromEnv(&c.Server); err != nil {
  47. return nil, err
  48. }
  49. if _, err = auximageprovider.LoadFallbackStaticConfigFromEnv(&c.FallbackImage); err != nil {
  50. return nil, err
  51. }
  52. if _, err = auximageprovider.LoadWatermarkStaticConfigFromEnv(&c.WatermarkImage); err != nil {
  53. return nil, err
  54. }
  55. if _, err = workers.LoadConfigFromEnv(&c.Workers); err != nil {
  56. return nil, err
  57. }
  58. if _, err = fetcher.LoadConfigFromEnv(&c.Fetcher); err != nil {
  59. return nil, err
  60. }
  61. if _, err = processinghandler.LoadConfigFromEnv(&c.Handlers.Processing); err != nil {
  62. return nil, err
  63. }
  64. if _, err = streamhandler.LoadConfigFromEnv(&c.Handlers.Stream); err != nil {
  65. return nil, err
  66. }
  67. if _, err := security.LoadConfigFromEnv(&c.Security); err != nil {
  68. return nil, err
  69. }
  70. return c, nil
  71. }