12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package server
- import (
- "time"
- "github.com/imgproxy/imgproxy/v3/config"
- )
- const (
- // gracefulTimeout represents graceful shutdown timeout
- gracefulTimeout = time.Duration(5 * time.Second)
- )
- // Config represents HTTP server config
- type Config struct {
- Listen string // Address to listen on
- Network string // Network type (tcp, unix)
- Bind string // Bind address
- PathPrefix string // Path prefix for the server
- MaxClients int // Maximum number of concurrent clients
- ReadRequestTimeout time.Duration // Timeout for reading requests
- KeepAliveTimeout time.Duration // Timeout for keep-alive connections
- GracefulTimeout time.Duration // Timeout for graceful shutdown
- CORSAllowOrigin string // CORS allowed origin
- Secret string // Secret for authorization
- DevelopmentErrorsMode bool // Enable development mode for detailed error messages
- SocketReusePort bool // Enable SO_REUSEPORT socket option
- HealthCheckPath string // Health check path from config
- WriteResponseTimeout time.Duration
- }
- // NewConfigFromEnv creates a new Config instance from environment variables
- func NewConfigFromEnv() *Config {
- return &Config{
- Network: config.Network,
- Bind: config.Bind,
- PathPrefix: config.PathPrefix,
- MaxClients: config.MaxClients,
- ReadRequestTimeout: time.Duration(config.ReadRequestTimeout) * time.Second,
- KeepAliveTimeout: time.Duration(config.KeepAliveTimeout) * time.Second,
- GracefulTimeout: gracefulTimeout,
- CORSAllowOrigin: config.AllowOrigin,
- Secret: config.Secret,
- DevelopmentErrorsMode: config.DevelopmentErrorsMode,
- SocketReusePort: config.SoReuseport,
- HealthCheckPath: config.HealthCheckPath,
- WriteResponseTimeout: time.Duration(config.WriteResponseTimeout) * time.Second,
- }
- }
|