package com.aol.micro.server.s3.plugin;
import com.amazonaws.ClientConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.aol.micro.server.s3.S3Configuration;
@Configuration
@ComponentScan(basePackages = {"com.aol.micro.server.s3"})
public class S3ClientProvider {
@Autowired
private S3Configuration s3Configuration;
@Bean
public AmazonS3Client getClient() {
AWSCredentials credentials;
if (s3Configuration.getSessionToken() == null) {
credentials = new BasicAWSCredentials(s3Configuration.getAccessKey(), s3Configuration.getSecretKey());
} else {
credentials = new BasicSessionCredentials(s3Configuration.getAccessKey(), s3Configuration.getSecretKey(),
s3Configuration.getSessionToken());
}
AmazonS3Client amazonS3Client = new AmazonS3Client(credentials, getClientConfiguration());
if (s3Configuration.getRegion() != null) {
Region region = Region.getRegion(Regions.fromName(s3Configuration.getRegion()));
amazonS3Client.setRegion(region);
}
return amazonS3Client;
}
private ClientConfiguration getClientConfiguration() {
return new ClientConfiguration().withMaxConnections(s3Configuration.getMaxConnections());
}
}