mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-12-23 22:11:10 +02:00
* transport.Common relies on config * cookies instance * errorreport package turned into instance
66 lines
2.3 KiB
Go
66 lines
2.3 KiB
Go
package processing
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
"github.com/imgproxy/imgproxy/v3/ensure"
|
|
"github.com/imgproxy/imgproxy/v3/env"
|
|
)
|
|
|
|
var (
|
|
IMGPROXY_REPORT_DOWNLOADING_ERRORS = env.Describe("IMGPROXY_REPORT_DOWNLOADING_ERRORS", "boolean")
|
|
IMGPROXY_LAST_MODIFIED_ENABLED = env.Describe("IMGPROXY_LAST_MODIFIED_ENABLED", "boolean")
|
|
IMGPROXY_ETAG_ENABLED = env.Describe("IMGPROXY_ETAG_ENABLED", "boolean")
|
|
IMGPROXY_REPORT_IO_ERRORS = env.Describe("IMGPROXY_REPORT_IO_ERRORS", "boolean")
|
|
IMGPROXY_FALLBACK_IMAGE_HTTP_CODE = env.Describe("IMGPROXY_FALLBACK_IMAGE_HTTP_CODE", "HTTP code")
|
|
IMGPROXY_ENABLE_DEBUG_HEADERS = env.Describe("IMGPROXY_ENABLE_DEBUG_HEADERS", "boolean")
|
|
)
|
|
|
|
// Config represents handler config
|
|
type Config struct {
|
|
ReportDownloadingErrors bool // Whether to report downloading errors
|
|
LastModifiedEnabled bool // Whether to enable Last-Modified
|
|
ETagEnabled bool // Whether to enable ETag
|
|
ReportIOErrors bool // Whether to report IO errors
|
|
FallbackImageHTTPCode int // Fallback image HTTP status code
|
|
EnableDebugHeaders bool // Whether to enable debug headers
|
|
}
|
|
|
|
// NewDefaultConfig creates a new configuration with defaults
|
|
func NewDefaultConfig() Config {
|
|
return Config{
|
|
ReportDownloadingErrors: true,
|
|
LastModifiedEnabled: true,
|
|
ETagEnabled: true,
|
|
ReportIOErrors: false,
|
|
FallbackImageHTTPCode: http.StatusOK,
|
|
EnableDebugHeaders: false,
|
|
}
|
|
}
|
|
|
|
// LoadConfigFromEnv loads config from environment variables
|
|
func LoadConfigFromEnv(c *Config) (*Config, error) {
|
|
c = ensure.Ensure(c, NewDefaultConfig)
|
|
|
|
err := errors.Join(
|
|
env.Bool(&c.ReportDownloadingErrors, IMGPROXY_REPORT_DOWNLOADING_ERRORS),
|
|
env.Bool(&c.LastModifiedEnabled, IMGPROXY_LAST_MODIFIED_ENABLED),
|
|
env.Bool(&c.ETagEnabled, IMGPROXY_ETAG_ENABLED),
|
|
env.Bool(&c.ReportIOErrors, IMGPROXY_REPORT_IO_ERRORS),
|
|
env.Int(&c.FallbackImageHTTPCode, IMGPROXY_FALLBACK_IMAGE_HTTP_CODE),
|
|
env.Bool(&c.EnableDebugHeaders, IMGPROXY_ENABLE_DEBUG_HEADERS),
|
|
)
|
|
|
|
return c, err
|
|
}
|
|
|
|
// Validate checks configuration values
|
|
func (c *Config) Validate() error {
|
|
if c.FallbackImageHTTPCode != 0 && (c.FallbackImageHTTPCode < 100 || c.FallbackImageHTTPCode > 599) {
|
|
return IMGPROXY_FALLBACK_IMAGE_HTTP_CODE.Errorf("invalid")
|
|
}
|
|
|
|
return nil
|
|
}
|