Search in sources :

Example 6 with Rule

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");
        }
    }
}
Also used : BucketCrossOriginConfiguration(com.amazonaws.services.s3.model.BucketCrossOriginConfiguration) CORSRule(com.amazonaws.services.s3.model.CORSRule) Test(org.junit.Test)

Example 7 with Rule

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);
    }
}
Also used : S3QueryStringSigner(com.amazonaws.services.s3.internal.S3QueryStringSigner) AWSCredentials(com.amazonaws.auth.AWSCredentials) AmazonWebServiceRequest(com.amazonaws.AmazonWebServiceRequest)

Example 8 with Rule

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());
}
Also used : BucketReplicationConfiguration(com.amazonaws.services.s3.model.BucketReplicationConfiguration) ReplicationDestinationConfig(com.amazonaws.services.s3.model.ReplicationDestinationConfig) GetBucketReplicationConfigurationRequest(com.amazonaws.services.s3.model.GetBucketReplicationConfigurationRequest) ReplicationRule(com.amazonaws.services.s3.model.ReplicationRule)

Example 9 with Rule

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();
}
Also used : CORSRule(com.amazonaws.services.s3.model.CORSRule) XmlWriter(com.amazonaws.services.s3.internal.XmlWriter)

Example 10 with Rule

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();
}
Also used : AllowedMethods(com.amazonaws.services.s3.model.CORSRule.AllowedMethods)

Aggregations

Test (org.junit.Test)15 Rule (com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Rule)13 CORSRule (com.amazonaws.services.s3.model.CORSRule)7 BucketLifecycleConfiguration (com.amazonaws.services.s3.model.BucketLifecycleConfiguration)6 LifecycleTagPredicate (com.amazonaws.services.s3.model.lifecycle.LifecycleTagPredicate)6 LifecycleAndOperator (com.amazonaws.services.s3.model.lifecycle.LifecycleAndOperator)5 HttpResponse (com.amazonaws.http.HttpResponse)4 AmazonS3 (com.amazonaws.services.s3.AmazonS3)4 XmlWriter (com.amazonaws.services.s3.internal.XmlWriter)4 RedirectRule (com.amazonaws.services.s3.model.RedirectRule)4 ReplicationRule (com.amazonaws.services.s3.model.ReplicationRule)4 LifecycleFilter (com.amazonaws.services.s3.model.lifecycle.LifecycleFilter)4 LifecycleFilterPredicate (com.amazonaws.services.s3.model.lifecycle.LifecycleFilterPredicate)4 LifecyclePrefixPredicate (com.amazonaws.services.s3.model.lifecycle.LifecyclePrefixPredicate)4 AmazonServiceException (com.amazonaws.AmazonServiceException)3 SdkClientException (com.amazonaws.SdkClientException)3 ProfileCredentialsProvider (com.amazonaws.auth.profile.ProfileCredentialsProvider)3 Regions (com.amazonaws.regions.Regions)3 ObjectMetadata (com.amazonaws.services.s3.model.ObjectMetadata)3 ReplicationDestinationConfig (com.amazonaws.services.s3.model.ReplicationDestinationConfig)3