Blame vendor/github.com/aws/aws-sdk-go/aws/client/client.go

Packit 63bb0d
package client
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"fmt"
Packit 63bb0d
Packit 63bb0d
	"github.com/aws/aws-sdk-go/aws"
Packit 63bb0d
	"github.com/aws/aws-sdk-go/aws/client/metadata"
Packit 63bb0d
	"github.com/aws/aws-sdk-go/aws/request"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
// A Config provides configuration to a service client instance.
Packit 63bb0d
type Config struct {
Packit 63bb0d
	Config        *aws.Config
Packit 63bb0d
	Handlers      request.Handlers
Packit 63bb0d
	PartitionID   string
Packit 63bb0d
	Endpoint      string
Packit 63bb0d
	SigningRegion string
Packit 63bb0d
	SigningName   string
Packit 63bb0d
Packit 63bb0d
	// States that the signing name did not come from a modeled source but
Packit 63bb0d
	// was derived based on other data. Used by service client constructors
Packit 63bb0d
	// to determine if the signin name can be overridden based on metadata the
Packit 63bb0d
	// service has.
Packit 63bb0d
	SigningNameDerived bool
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// ConfigProvider provides a generic way for a service client to receive
Packit 63bb0d
// the ClientConfig without circular dependencies.
Packit 63bb0d
type ConfigProvider interface {
Packit 63bb0d
	ClientConfig(serviceName string, cfgs ...*aws.Config) Config
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// ConfigNoResolveEndpointProvider same as ConfigProvider except it will not
Packit 63bb0d
// resolve the endpoint automatically. The service client's endpoint must be
Packit 63bb0d
// provided via the aws.Config.Endpoint field.
Packit 63bb0d
type ConfigNoResolveEndpointProvider interface {
Packit 63bb0d
	ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) Config
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// A Client implements the base client request and response handling
Packit 63bb0d
// used by all service clients.
Packit 63bb0d
type Client struct {
Packit 63bb0d
	request.Retryer
Packit 63bb0d
	metadata.ClientInfo
Packit 63bb0d
Packit 63bb0d
	Config   aws.Config
Packit 63bb0d
	Handlers request.Handlers
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// New will return a pointer to a new initialized service client.
Packit 63bb0d
func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client {
Packit 63bb0d
	svc := &Client{
Packit 63bb0d
		Config:     cfg,
Packit 63bb0d
		ClientInfo: info,
Packit 63bb0d
		Handlers:   handlers.Copy(),
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	switch retryer, ok := cfg.Retryer.(request.Retryer); {
Packit 63bb0d
	case ok:
Packit 63bb0d
		svc.Retryer = retryer
Packit 63bb0d
	case cfg.Retryer != nil && cfg.Logger != nil:
Packit 63bb0d
		s := fmt.Sprintf("WARNING: %T does not implement request.Retryer; using DefaultRetryer instead", cfg.Retryer)
Packit 63bb0d
		cfg.Logger.Log(s)
Packit 63bb0d
		fallthrough
Packit 63bb0d
	default:
Packit 63bb0d
		maxRetries := aws.IntValue(cfg.MaxRetries)
Packit 63bb0d
		if cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries {
Packit 63bb0d
			maxRetries = DefaultRetryerMaxNumRetries
Packit 63bb0d
		}
Packit 63bb0d
		svc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries}
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	svc.AddDebugHandlers()
Packit 63bb0d
Packit 63bb0d
	for _, option := range options {
Packit 63bb0d
		option(svc)
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	return svc
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// NewRequest returns a new Request pointer for the service API
Packit 63bb0d
// operation and parameters.
Packit 63bb0d
func (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request {
Packit 63bb0d
	return request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data)
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// AddDebugHandlers injects debug logging handlers into the service to log request
Packit 63bb0d
// debug information.
Packit 63bb0d
func (c *Client) AddDebugHandlers() {
Packit 63bb0d
	if !c.Config.LogLevel.AtLeast(aws.LogDebug) {
Packit 63bb0d
		return
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler)
Packit 63bb0d
	c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler)
Packit 63bb0d
}