package icapclient

import (
	"time"
)

// Config is the shared configuration for the icap client library
type Config struct {
	ICAPConn ICAPConnConfig
}

// DefaultConfig returns the default configuration for the icap client library
func DefaultConfig() Config {
	return Config{
		ICAPConn: ICAPConnConfig{
			Timeout: 15 * time.Second,
		},
	}
}

// ConfigOption is a function that configures the icap client
type ConfigOption func(*Config)

// WithICAPConnectionTimeout sets the timeout for the connection to the icap server
func WithICAPConnectionTimeout(timeout time.Duration) ConfigOption {
	return func(cfg *Config) {
		if timeout <= 0 {
			return
		}

		cfg.ICAPConn.Timeout = timeout
	}
}
