func (f Factory) httpClient(config Config, taskReporter TaskReporter, fileReporter FileReporter) (Client, error) { certPool, err := config.CACertPool() if err != nil { return Client{}, err } if certPool == nil { f.logger.Debug(f.logTag, "Using default root CAs") } else { f.logger.Debug(f.logTag, "Using custom root CAs") } rawClient := boshhttp.CreateDefaultClient(certPool) authAdjustment := NewAuthRequestAdjustment( config.TokenFunc, config.Username, config.Password) rawClient.CheckRedirect = func(req *http.Request, via []*http.Request) error { if len(via) > 10 { return bosherr.Error("Too many redirects") } // Since redirected requests are not retried, // forcefully adjust auth token as this is the last chance. err := authAdjustment.Adjust(req, true) if err != nil { return err } req.URL.Host = fmt.Sprintf("%s:%d", config.Host, config.Port) req.Header.Del("Referer") return nil } authedClient := NewAdjustableClient(rawClient, authAdjustment) httpClient := boshhttp.NewHTTPClient(authedClient, f.logger) endpoint := url.URL{ Scheme: "https", Host: fmt.Sprintf("%s:%d", config.Host, config.Port), } return NewClient(endpoint.String(), httpClient, taskReporter, fileReporter, f.logger), nil }
func NewSDK(c config.S3Cli) (*s3.S3, error) { var httpClient *http.Client if c.SSLVerifyPeer { httpClient = boshhttp.CreateDefaultClient(nil) } else { httpClient = boshhttp.CreateDefaultClientInsecureSkipVerify() } s3Config := aws.NewConfig(). WithLogLevel(aws.LogOff). WithS3ForcePathStyle(true). WithDisableSSL(!c.UseSSL). WithHTTPClient(httpClient) if c.UseRegion() { s3Config = s3Config.WithRegion(c.Region).WithEndpoint(c.S3Endpoint()) } else { s3Config = s3Config.WithRegion(config.EmptyRegion).WithEndpoint(c.S3Endpoint()) } if c.CredentialsSource == config.StaticCredentialsSource { s3Config = s3Config.WithCredentials(credentials.NewStaticCredentials(c.AccessKeyID, c.SecretAccessKey, "")) } if c.CredentialsSource == config.NoneCredentialsSource { s3Config = s3Config.WithCredentials(credentials.AnonymousCredentials) } s3Session := session.New(s3Config) s3Client := s3.New(s3Session) if c.UseV2SigningMethod { setv2Handlers(s3Client) } return s3Client, nil }
func (f Factory) httpClient(config Config) (Client, error) { certPool, err := config.CACertPool() if err != nil { return Client{}, err } if certPool == nil { f.logger.Debug(f.logTag, "Using default root CAs") } else { f.logger.Debug(f.logTag, "Using custom root CAs") } rawClient := boshhttp.CreateDefaultClient(certPool) httpClient := boshhttp.NewHTTPClient(rawClient, f.logger) endpoint := url.URL{ Scheme: "https", Host: fmt.Sprintf("%s:%d", config.Host, config.Port), User: url.UserPassword(config.Client, config.ClientSecret), } return NewClient(endpoint.String(), httpClient, f.logger), nil }