 Documentation
      ¶
      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