Documentation
¶
Index ¶
- Variables
- type AuthConfig
- type AuthType
- type CircuitBreakerConfig
- type Config
- func (c *Config) Validate() error
- func (c *Config) WithAuth(authType AuthType, credentials map[string]string) *Config
- func (c *Config) WithCircuitBreaker(enabled bool) *Config
- func (c *Config) WithHeaders(headers map[string]string) *Config
- func (c *Config) WithLogging(requests, responses, body bool) *Config
- func (c *Config) WithRetries(maxRetries int) *Config
- func (c *Config) WithTimeout(timeout time.Duration) *Config
- type RetryConfig
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidName = errors.New("client name cannot be empty") ErrInvalidBaseURL = errors.New("base URL cannot be empty") ErrInvalidTimeout = errors.New("timeout must be greater than 0") ErrInvalidMaxRetries = errors.New("max retries cannot be negative") ErrInvalidMultiplier = errors.New("multiplier must be greater than 0") ErrInvalidFailureRatio = errors.New("failure ratio must be between 0.0 and 1.0") )
Functions ¶
This section is empty.
Types ¶
type AuthConfig ¶
type AuthConfig struct { Type AuthType `json:"type"` Username string `json:"username,omitempty"` Password string `json:"password,omitempty"` Token string `json:"token,omitempty"` APIKey string `json:"api_key,omitempty"` Header string `json:"header,omitempty"` // Para API key custom header }
AuthConfig configura la autenticación
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct { MaxRequests uint32 `json:"max_requests"` Interval time.Duration `json:"interval"` Timeout time.Duration `json:"timeout"` FailureThreshold uint32 `json:"failure_threshold"` FailureRatio float64 `json:"failure_ratio"` MinimumRequestThreshold uint32 `json:"minimum_request_threshold"` }
CircuitBreakerConfig configura el circuit breaker
type Config ¶
type Config struct { // Name es el nombre del cliente para logs y métricas Name string `json:"name"` // BaseURL es la URL base para todas las requests BaseURL string `json:"base_url"` // Timeout es el timeout total para requests Timeout time.Duration `json:"timeout"` // RetryConfig configura el comportamiento de retry RetryConfig RetryConfig `json:"retry_config"` // CircuitBreakerEnabled habilita circuit breaker CircuitBreakerEnabled bool `json:"circuit_breaker_enabled"` // CircuitBreakerConfig configuración del circuit breaker CircuitBreakerConfig CircuitBreakerConfig `json:"circuit_breaker_config"` // Headers por defecto para todas las requests DefaultHeaders map[string]string `json:"default_headers"` // UserAgent personalizado UserAgent string `json:"user_agent"` // TLS Configuration InsecureSkipVerify bool `json:"insecure_skip_verify"` // Connection pooling MaxIdleConns int `json:"max_idle_conns"` MaxIdleConnsPerHost int `json:"max_idle_conns_per_host"` IdleConnTimeout time.Duration `json:"idle_conn_timeout"` // Timeouts específicos DialTimeout time.Duration `json:"dial_timeout"` KeepAlive time.Duration `json:"keep_alive"` TLSHandshakeTimeout time.Duration `json:"tls_handshake_timeout"` ResponseHeaderTimeout time.Duration `json:"response_header_timeout"` ExpectContinueTimeout time.Duration `json:"expect_continue_timeout"` // Logging LogRequests bool `json:"log_requests"` LogResponses bool `json:"log_responses"` LogBody bool `json:"log_body"` // Metrics EnableMetrics bool `json:"enable_metrics"` // Authentication AuthConfig AuthConfig `json:"auth_config"` }
Config define la configuración de un HTTP client resiliente
func DefaultConfig ¶
DefaultConfig retorna configuración por defecto
func ExternalServiceConfig ¶
ExternalServiceConfig retorna configuración para servicios externos
func FastConfig ¶
FastConfig retorna configuración optimizada para velocidad
func InternalServiceConfig ¶
InternalServiceConfig retorna configuración para servicios internos
func ResilientConfig ¶
ResilientConfig retorna configuración optimizada para resiliencia
func (*Config) WithCircuitBreaker ¶
WithCircuitBreaker habilita/deshabilita circuit breaker
func (*Config) WithHeaders ¶
WithHeaders añade headers por defecto
func (*Config) WithLogging ¶
WithLogging configura logging
func (*Config) WithRetries ¶
WithRetries configura número de retries
type RetryConfig ¶
type RetryConfig struct { Enabled bool `json:"enabled"` MaxRetries int `json:"max_retries"` InitialWait time.Duration `json:"initial_wait"` MaxWait time.Duration `json:"max_wait"` Multiplier float64 `json:"multiplier"` Jitter bool `json:"jitter"` // RetryableStatusCodes códigos de estado que permiten retry RetryableStatusCodes []int `json:"retryable_status_codes"` // RetryableErrors errores que permiten retry RetryableErrors []string `json:"retryable_errors"` // OnRetry callback ejecutado en cada retry OnRetry func(attempt int, err error) `json:"-"` }
RetryConfig configura el comportamiento de retry