github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/blob_store/s3_blob_store/blob_store_verifier.go (about)

     1  package s3_blob_store
     2  
     3  import (
     4  	"github.com/aws/aws-sdk-go/aws"
     5  	"github.com/aws/aws-sdk-go/aws/awserr"
     6  	"github.com/aws/aws-sdk-go/aws/credentials"
     7  	"github.com/aws/aws-sdk-go/aws/session"
     8  	"github.com/aws/aws-sdk-go/service/s3"
     9  
    10  	config_package "github.com/cloudfoundry-incubator/ltc/config"
    11  )
    12  
    13  type Verifier struct {
    14  	Endpoint string
    15  }
    16  
    17  func (v Verifier) Verify(config *config_package.Config) (authorized bool, err error) {
    18  	blobStoreConfig := config.S3BlobStore()
    19  	client := s3.New(session.New(&aws.Config{
    20  		Credentials:      credentials.NewStaticCredentials(blobStoreConfig.AccessKey, blobStoreConfig.SecretKey, ""),
    21  		Region:           aws.String(blobStoreConfig.Region),
    22  		S3ForcePathStyle: aws.Bool(true),
    23  	}))
    24  	if v.Endpoint != "" {
    25  		client.Endpoint = v.Endpoint
    26  	}
    27  	_, err = client.ListObjects(&s3.ListObjectsInput{
    28  		Bucket: aws.String(blobStoreConfig.BucketName),
    29  	})
    30  	if err != nil {
    31  		if awsErr, ok := err.(awserr.RequestFailure); ok && awsErr.StatusCode() == 403 {
    32  			return false, nil
    33  		}
    34  
    35  		return false, err
    36  	}
    37  	return true, nil
    38  }