use of com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule in project aws-sdk-android by aws-amplify.
the class BucketCrossOriginConfigurationIntegrationTest method testBucketCrossOrigin.
@Test
public void testBucketCrossOrigin() throws Exception {
// Check the bucket for its existing CORS config
BucketCrossOriginConfiguration bucketCrossOriginConfiguration = s3.getBucketCrossOriginConfiguration(BUCKET_NAME);
assertNull(bucketCrossOriginConfiguration);
// Apply a config
CORSRule rule1 = new CORSRule();
rule1.setId(ID1);
rule1.setMaxAgeSeconds(MAX_AGE_SECONDS);
rule1.setExposedHeaders(EXPOSE_HEADER, EXPOSE_HEADER + "1");
rule1.setAllowedMethods(AllowedMethods.GET, AllowedMethods.POST);
rule1.setAllowedOrigins(ALLOWED_ORIGIN);
rule1.setAllowedHeaders(ALLOWED_HEADER, ALLOWED_HEADER + "1");
CORSRule rule2 = new CORSRule();
rule2.setId(ID2);
rule2.setMaxAgeSeconds(MAX_AGE_SECONDS);
rule2.setExposedHeaders(EXPOSE_HEADER, EXPOSE_HEADER + "1");
rule2.setAllowedMethods(CORSRule.AllowedMethods.PUT, CORSRule.AllowedMethods.DELETE);
rule2.setAllowedOrigins(ALLOWED_ORIGIN);
rule2.setAllowedHeaders(ALLOWED_HEADER, ALLOWED_HEADER + "1");
BucketCrossOriginConfiguration config = new BucketCrossOriginConfiguration().withRules(rule1, rule2);
s3.setBucketCrossOriginConfiguration(BUCKET_NAME, config);
// Check reading it back
bucketCrossOriginConfiguration = waitForbucketCrossOriginConfiguration(BUCKET_NAME);
assertNotNull(bucketCrossOriginConfiguration);
assertEquals(2, bucketCrossOriginConfiguration.getRules().size());
for (CORSRule rule : bucketCrossOriginConfiguration.getRules()) {
if (rule.getId().equals(ID1)) {
assertTrue(rule.getAllowedMethods().contains(CORSRule.AllowedMethods.GET));
assertTrue(rule.getAllowedMethods().contains(CORSRule.AllowedMethods.POST));
assertEquals(MAX_AGE_SECONDS, rule.getMaxAgeSeconds());
System.out.println(rule.getAllowedHeaders().size());
assertTrue(rule.getAllowedHeaders().contains(ALLOWED_HEADER));
assertTrue(rule.getAllowedHeaders().contains(ALLOWED_HEADER + "1"));
assertTrue(rule.getExposedHeaders().contains(EXPOSE_HEADER));
assertTrue(rule.getExposedHeaders().contains(EXPOSE_HEADER + "1"));
assertEquals(ALLOWED_ORIGIN, rule.getAllowedOrigins().get(0));
} else if (rule.getId().equals(ID2)) {
assertTrue(rule.getAllowedMethods().contains(CORSRule.AllowedMethods.PUT));
assertTrue(rule.getAllowedMethods().contains(CORSRule.AllowedMethods.DELETE));
assertEquals(MAX_AGE_SECONDS, rule.getMaxAgeSeconds());
assertTrue(rule.getAllowedHeaders().contains(ALLOWED_HEADER));
assertTrue(rule.getAllowedHeaders().contains(ALLOWED_HEADER + "1"));
assertTrue(rule.getExposedHeaders().contains(EXPOSE_HEADER));
assertTrue(rule.getExposedHeaders().contains(EXPOSE_HEADER + "1"));
assertEquals(ALLOWED_ORIGIN, rule.getAllowedOrigins().get(0));
} else {
fail("no such rule ID");
}
}
}
use of com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule in project aws-sdk-android by aws-amplify.
the class AmazonS3Client method presignRequest.
/**
* Pre-signs the specified request, using a signature query-string
* parameter.
*
* @param request The request to sign.
* @param methodName The HTTP method (GET, PUT, DELETE, HEAD) for the
* specified request.
* @param bucketName The name of the bucket involved in the request. If the
* request is not an operation on a bucket this parameter should
* be null.
* @param key The object key involved in the request. If the request is not
* an operation on an object, this parameter should be null.
* @param expiration The time at which the signed request is no longer
* valid, and will stop working.
* @param subResource The optional sub-resource being requested as part of
* the request (e.g. "location", "acl", "logging", or "torrent").
*/
protected <T> void presignRequest(Request<T> request, HttpMethod methodName, String bucketName, String key, Date expiration, String subResource) {
// Run any additional request handlers if present
beforeRequest(request);
String resourcePath = "/" + ((bucketName != null) ? bucketName + "/" : "") + ((key != null) ? key : "") + ((subResource != null) ? "?" + subResource : "");
// Make sure the resource-path for signing does not contain
// any consecutive "/"s.
// Note that we should also follow the same rule to escape
// consecutive "/"s when generating the presigned URL.
// See ServiceUtils#convertRequestToUrl(...)
resourcePath = resourcePath.replaceAll("(?<=/)/", "%2F");
AWSCredentials credentials = awsCredentialsProvider.getCredentials();
final AmazonWebServiceRequest originalRequest = request.getOriginalRequest();
if (originalRequest != null && originalRequest.getRequestCredentials() != null) {
credentials = originalRequest.getRequestCredentials();
}
new S3QueryStringSigner(methodName.toString(), resourcePath, expiration).sign(request, credentials);
// with the pre-signed URL when it's sent back to Amazon S3.
if (request.getHeaders().containsKey(Headers.SECURITY_TOKEN)) {
final String value = request.getHeaders().get(Headers.SECURITY_TOKEN);
request.addParameter(Headers.SECURITY_TOKEN, value);
request.getHeaders().remove(Headers.SECURITY_TOKEN);
}
}
use of com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule in project aws-sdk-android by aws-amplify.
the class BucketReplicationIntegrationTest method testSetAndRetrieveReplicationConfiguration.
public void testSetAndRetrieveReplicationConfiguration() {
// Setting new configuration and retrieving.
BucketReplicationConfiguration configuration = new BucketReplicationConfiguration();
configuration.addRule(RULE1, new ReplicationRule().withPrefix("testPrefix1").withStatus(ReplicationRuleStatus.Enabled).withDestinationConfig(new ReplicationDestinationConfig().withBucketARN(DEST_BUCKET_ARN)));
configuration.addRule(RULE2, new ReplicationRule().withPrefix("testPrefix2").withStatus(ReplicationRuleStatus.Enabled).withDestinationConfig(new ReplicationDestinationConfig().withBucketARN(DEST_BUCKET_ARN)));
euS3.setBucketReplicationConfiguration(SOURCE_BUCKET_NAME, configuration);
BucketReplicationConfiguration retrievedReplicationConfig = euS3.getBucketReplicationConfiguration(SOURCE_BUCKET_NAME);
ReplicationRule replRule1 = retrievedReplicationConfig.getRule(RULE1);
ReplicationRule replRule2 = retrievedReplicationConfig.getRule(RULE2);
assertNotNull(replRule1);
assertNotNull(replRule2);
assertEquals("testPrefix1", replRule1.getPrefix());
assertEquals(DEST_BUCKET_ARN, replRule1.getDestinationConfig().getBucketARN());
assertEquals(ROLE, retrievedReplicationConfig.getRoleARN());
assertEquals("testPrefix2", replRule2.getPrefix());
assertEquals(DEST_BUCKET_ARN, replRule2.getDestinationConfig().getBucketARN());
// disabling second rule.
replRule2.setStatus(ReplicationRuleStatus.Disabled);
BucketReplicationConfiguration updatedConfiguration = new BucketReplicationConfiguration().addRule(RULE1, replRule1).addRule(RULE2, replRule2).withRoleARN(ROLE);
euS3.setBucketReplicationConfiguration(SOURCE_BUCKET_NAME, updatedConfiguration);
GetBucketReplicationConfigurationRequest getBucketReplicationConfigurationRequest = new GetBucketReplicationConfigurationRequest(SOURCE_BUCKET_NAME);
retrievedReplicationConfig = euS3.getBucketReplicationConfiguration(getBucketReplicationConfigurationRequest);
replRule1 = retrievedReplicationConfig.getRule(RULE1);
replRule2 = retrievedReplicationConfig.getRule(RULE2);
assertNotNull(replRule1);
assertNotNull(replRule2);
assertEquals("testPrefix1", replRule1.getPrefix());
assertEquals(DEST_BUCKET_ARN, replRule1.getDestinationConfig().getBucketARN());
assertEquals(ReplicationRuleStatus.Enabled.toString(), replRule1.getStatus());
assertEquals("testPrefix2", replRule2.getPrefix());
assertEquals(DEST_BUCKET_ARN, replRule2.getDestinationConfig().getBucketARN());
assertEquals(ReplicationRuleStatus.Disabled.toString(), replRule2.getStatus());
}
use of com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule in project aws-sdk-android by aws-amplify.
the class BucketConfigurationXmlFactory method convertToXmlByteArray.
/**
* Converts the specified {@link BucketCrossOriginConfiguration} object to
* an XML fragment that can be sent to Amazon S3.
*
* @param config The {@link BucketCrossOriginConfiguration}
*/
/*
* <CORSConfiguration> <CORSRule>
* <AllowedOrigin>http://www.foobar.com</AllowedOrigin>
* <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSec>
* <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> </CORSRule>
* </CORSConfiguration>
*/
public byte[] convertToXmlByteArray(BucketCrossOriginConfiguration config) throws AmazonClientException {
final XmlWriter xml = new XmlWriter();
xml.start("CORSConfiguration", "xmlns", Constants.XML_NAMESPACE);
for (final CORSRule rule : config.getRules()) {
writeRule(xml, rule);
}
xml.end();
return xml.getBytes();
}
use of com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule in project aws-sdk-android by aws-amplify.
the class BucketConfigurationXmlFactory method writeRule.
private void writeRule(XmlWriter xml, CORSRule rule) {
xml.start("CORSRule");
if (rule.getId() != null) {
xml.start("ID").value(rule.getId()).end();
}
if (rule.getAllowedOrigins() != null) {
for (final String origin : rule.getAllowedOrigins()) {
xml.start("AllowedOrigin").value(origin).end();
}
}
if (rule.getAllowedMethods() != null) {
for (final AllowedMethods method : rule.getAllowedMethods()) {
xml.start("AllowedMethod").value(method.toString()).end();
}
}
if (rule.getMaxAgeSeconds() != 0) {
xml.start("MaxAgeSeconds").value(Integer.toString(rule.getMaxAgeSeconds())).end();
}
if (rule.getExposedHeaders() != null) {
for (final String header : rule.getExposedHeaders()) {
xml.start("ExposeHeader").value(header).end();
}
}
if (rule.getAllowedHeaders() != null) {
for (final String header : rule.getAllowedHeaders()) {
xml.start("AllowedHeader").value(header).end();
}
}
// </CORSRule>
xml.end();
}
Aggregations