Skip to content

Commit

Permalink
Merge pull request #41 from joelittlejohn/china-s3-support
Browse files Browse the repository at this point in the history
Support cn-north-1 and us-gov-west-1 buckets
  • Loading branch information
danielcompton committed Feb 20, 2017
2 parents f81ebb1 + f08b25a commit aeb3346
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ target
/.lein-failures
/checkouts
/.lein-deps-sum
.classpath
.settings
.project
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,16 @@
import org.apache.maven.wagon.proxy.ProxyInfoProvider;
import org.apache.maven.wagon.repository.Repository;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.regions.DefaultAwsRegionProviderChain;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.internal.Mimetypes;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.ObjectMetadata;
Expand Down Expand Up @@ -102,11 +104,34 @@ protected void connectToRepository(Repository repository, AuthenticationInfo aut
this.amazonS3 = new AmazonS3Client(awsCredentials, clientConfiguration);
}

try {
com.amazonaws.regions.Region region = parseRegion(new DefaultAwsRegionProviderChain().getRegion());
if (!region.getPartition().equals("aws")) {
this.amazonS3.setRegion(region);
} else {
detectEndpointFromBucket();
}
} catch (AmazonClientException e) {
detectEndpointFromBucket();
}
}
}

private void detectEndpointFromBucket() {
String location = this.amazonS3.getBucketLocation(this.bucketName);

try {
Region region = Region.fromLocationConstraint(this.amazonS3.getBucketLocation(this.bucketName));
this.amazonS3.setEndpoint(region.getEndpoint());
} catch (IllegalArgumentException e) {
this.amazonS3.setRegion(parseRegion(location));
}
}

private com.amazonaws.regions.Region parseRegion(String region) {
return com.amazonaws.regions.Region.getRegion(Regions.fromName(region));
}

@Override
protected void disconnectFromRepository() {
this.amazonS3 = null;
Expand Down

0 comments on commit aeb3346

Please sign in to comment.