コード例 #1
0
        private GetPublicAccessBlockResponse Call_GetPublicAccessBlock(IAmazonS3 client, string bucketName, PublicAccessBlockConfiguration expectedConfiguration)
        {
            var getRequest = new GetPublicAccessBlockRequest
            {
                BucketName = bucketName
            };

            GetPublicAccessBlockResponse getResponse = null;

            var sleeper = new UtilityMethods.ListSleeper(500, 1000, 2000, 5000, 10000, 15000);

            UtilityMethods.WaitUntil(() =>
            {
                getResponse = client.GetPublicAccessBlock(getRequest);
                if (expectedConfiguration == null)
                {
                    //If expectedConfiguration is null then we want GetPublicAccessBlock to throw an exception because the configuration was removed.
                    //Wait until the configuration was removed / until an exception is thrown.
                    return(false);
                }

                return(getResponse.HttpStatusCode == HttpStatusCode.OK &&
                       expectedConfiguration.BlockPublicAcls == getResponse.PublicAccessBlockConfiguration.BlockPublicAcls &&
                       expectedConfiguration.BlockPublicPolicy == getResponse.PublicAccessBlockConfiguration.BlockPublicPolicy &&
                       expectedConfiguration.IgnorePublicAcls == getResponse.PublicAccessBlockConfiguration.IgnorePublicAcls &&
                       expectedConfiguration.RestrictPublicBuckets == getResponse.PublicAccessBlockConfiguration.RestrictPublicBuckets);
            }, sleeper, 30);

            Assert.AreEqual(true, getResponse != null && getResponse.HttpStatusCode == HttpStatusCode.OK);
            Assert.AreEqual(expectedConfiguration.BlockPublicAcls, getResponse.PublicAccessBlockConfiguration.BlockPublicAcls);
            Assert.AreEqual(expectedConfiguration.BlockPublicPolicy, getResponse.PublicAccessBlockConfiguration.BlockPublicPolicy);
            Assert.AreEqual(expectedConfiguration.IgnorePublicAcls, getResponse.PublicAccessBlockConfiguration.IgnorePublicAcls);
            Assert.AreEqual(expectedConfiguration.RestrictPublicBuckets, getResponse.PublicAccessBlockConfiguration.RestrictPublicBuckets);
            return(getResponse);
        }
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            var response = new GetPublicAccessBlockResponse();

            UnmarshallResult(context, response);
            return(response);
        }
        private static void UnmarshallResult(XmlUnmarshallerContext context, GetPublicAccessBlockResponse response)
        {
            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            while (context.Read())
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("PublicAccessBlockConfiguration", targetDepth))
                    {
                        response.PublicAccessBlockConfiguration = PublicAccessBlockConfigurationUnmarshaller.Instance.Unmarshall(context);
                    }
                }
                else if (context.IsEndElement && context.CurrentDepth < originalDepth)
                {
                    return;
                }
            }
        }