public IRequest Marshall(DeleteObjectsRequest deleteObjectsRequest) { IRequest request = new DefaultRequest(deleteObjectsRequest, "AmazonS3"); request.HttpMethod = "POST"; if (deleteObjectsRequest.IsSetMfaCodes()) { request.Headers.Add("x-amz-mfa", deleteObjectsRequest.MfaCodes.FormattedMfaCodes); } var uriResourcePath = string.Concat("/", S3Transforms.ToStringValue(deleteObjectsRequest.BucketName)); request.Parameters.Add("delete", null); request.CanonicalResource = S3Transforms.GetCanonicalResource(uriResourcePath, request.Parameters); request.ResourcePath = S3Transforms.FormatResourcePath(uriResourcePath, request.Parameters); var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("Delete", ""); var deleteDeleteobjectsList = deleteObjectsRequest.Objects; if (deleteDeleteobjectsList != null && deleteDeleteobjectsList.Count > 0) { foreach (var deleteDeleteobjectsListValue in deleteDeleteobjectsList) { xmlWriter.WriteStartElement("Object", ""); if (deleteDeleteobjectsListValue.IsSetKey()) { xmlWriter.WriteElementString("Key", "", S3Transforms.ToXmlStringValue(deleteDeleteobjectsListValue.Key)); } if (deleteDeleteobjectsListValue.IsSetVersionId()) { xmlWriter.WriteElementString("VersionId", "", S3Transforms.ToXmlStringValue(deleteDeleteobjectsListValue.VersionId)); } xmlWriter.WriteEndElement(); } } if (deleteObjectsRequest.IsSetQuiet()) { xmlWriter.WriteElementString("Quiet", "", deleteObjectsRequest.Quiet.ToString().ToLower(CultureInfo.InvariantCulture)); } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; request.Parameters[S3QueryParameter.ContentType.ToString()] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[Amazon.Util.AWSSDKUtils.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } if (!request.UseQueryString) { var queryString = Amazon.Util.AWSSDKUtils.GetParametersAsString(request.Parameters); if (!string.IsNullOrEmpty(queryString)) { request.ResourcePath = string.Concat(request.ResourcePath, request.ResourcePath.Contains("?") ? "&" : "?", queryString); } } return(request); }
public IRequest Marshall(RestoreObjectRequest restoreObjectRequest) { IRequest request = new DefaultRequest(restoreObjectRequest, "AmazonS3"); request.HttpMethod = "POST"; if (restoreObjectRequest.IsSetRequestPayer()) { request.Headers.Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(restoreObjectRequest.RequestPayer.ToString())); } if (restoreObjectRequest.IsSetExpectedBucketOwner()) { request.Headers.Add(S3Constants.AmzHeaderExpectedBucketOwner, S3Transforms.ToStringValue(restoreObjectRequest.ExpectedBucketOwner)); } if (string.IsNullOrEmpty(restoreObjectRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "RestoreObjectRequest.BucketName"); } if (string.IsNullOrEmpty(restoreObjectRequest.Key)) { throw new System.ArgumentException("Key is a required property and must be set before making this call.", "RestoreObjectRequest.Key"); } request.MarshallerVersion = 2; request.ResourcePath = string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(restoreObjectRequest.BucketName), S3Transforms.ToStringValue(restoreObjectRequest.Key)); request.AddSubResource("restore"); if (restoreObjectRequest.IsSetVersionId()) { request.AddSubResource("versionId", S3Transforms.ToStringValue(restoreObjectRequest.VersionId)); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { restoreObjectRequest.Marshall("RestoreRequest", xmlWriter); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketEncryptionRequest putBucketEncryptionRequest) { IRequest request = new DefaultRequest(putBucketEncryptionRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (string.IsNullOrEmpty(putBucketEncryptionRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutBucketEncryptionRequest.BucketName"); } request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketEncryptionRequest.BucketName)); request.AddSubResource("encryption"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { if (putBucketEncryptionRequest.IsSetServerSideEncryptionConfiguration()) { var sseConfiguration = putBucketEncryptionRequest.ServerSideEncryptionConfiguration; xmlWriter.WriteStartElement("ServerSideEncryptionConfiguration", ""); if (sseConfiguration != null) { foreach (var serverSideEncryptionRule in sseConfiguration.ServerSideEncryptionRules) { xmlWriter.WriteStartElement("Rule", ""); if (serverSideEncryptionRule != null) { if (serverSideEncryptionRule.IsSetServerSideEncryptionByDefault()) { xmlWriter.WriteStartElement("ApplyServerSideEncryptionByDefault", ""); var sseDefault = serverSideEncryptionRule.ServerSideEncryptionByDefault; if (sseDefault.IsSetServerSideEncryptionAlgorithm()) { xmlWriter.WriteElementString("SSEAlgorithm", "", S3Transforms.ToXmlStringValue(sseDefault.ServerSideEncryptionAlgorithm)); } if (sseDefault.IsSetServerSideEncryptionKeyManagementServiceKeyId()) { xmlWriter.WriteElementString("KMSMasterKeyID", "", S3Transforms.ToXmlStringValue(sseDefault.ServerSideEncryptionKeyManagementServiceKeyId)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); if (putBucketEncryptionRequest.IsSetContentMD5()) { checksum = putBucketEncryptionRequest.ContentMD5; } request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketNotificationRequest putBucketNotificationRequest) { IRequest request = new DefaultRequest(putBucketNotificationRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketNotificationRequest.BucketName)); request.AddSubResource("notification"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("NotificationConfiguration", ""); if (putBucketNotificationRequest.IsSetTopicConfigurations()) { foreach (var topicConfiguartion in putBucketNotificationRequest.TopicConfigurations) { if (topicConfiguartion != null) { xmlWriter.WriteStartElement("TopicConfiguration", ""); if (topicConfiguartion.IsSetId()) { xmlWriter.WriteElementString("Id", "", S3Transforms.ToXmlStringValue(topicConfiguartion.Id)); } if (topicConfiguartion.IsSetTopic()) { xmlWriter.WriteElementString("Topic", "", S3Transforms.ToXmlStringValue(topicConfiguartion.Topic)); } WriteConfigurationCommon(xmlWriter, topicConfiguartion); xmlWriter.WriteEndElement(); } } } if (putBucketNotificationRequest.IsSetQueueConfigurations()) { foreach (var queueConfiguartion in putBucketNotificationRequest.QueueConfigurations) { if (queueConfiguartion != null) { xmlWriter.WriteStartElement("QueueConfiguration", ""); if (queueConfiguartion.IsSetId()) { xmlWriter.WriteElementString("Id", "", S3Transforms.ToXmlStringValue(queueConfiguartion.Id)); } if (queueConfiguartion.IsSetQueue()) { xmlWriter.WriteElementString("Queue", "", S3Transforms.ToXmlStringValue(queueConfiguartion.Queue)); } WriteConfigurationCommon(xmlWriter, queueConfiguartion); xmlWriter.WriteEndElement(); } } } if (putBucketNotificationRequest.IsSetLambdaFunctionConfigurations()) { foreach (var lambdaFunctionConfiguartion in putBucketNotificationRequest.LambdaFunctionConfigurations) { if (lambdaFunctionConfiguartion != null) { xmlWriter.WriteStartElement("CloudFunctionConfiguration", ""); if (lambdaFunctionConfiguartion.IsSetId()) { xmlWriter.WriteElementString("Id", "", S3Transforms.ToXmlStringValue(lambdaFunctionConfiguartion.Id)); } if (lambdaFunctionConfiguartion.IsSetFunctionArn()) { xmlWriter.WriteElementString("CloudFunction", "", S3Transforms.ToXmlStringValue(lambdaFunctionConfiguartion.FunctionArn)); } WriteConfigurationCommon(xmlWriter, lambdaFunctionConfiguartion); xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
/// <summary> /// Marshaller the request object to the HTTP request. /// </summary> /// <param name="publicRequest"></param> /// <returns></returns> public IRequest Marshall(PutObjectLegalHoldRequest publicRequest) { var request = new DefaultRequest(publicRequest, "AmazonS3"); request.HttpMethod = "PUT"; string uriResourcePath = "/{Bucket}/{Key+}"; request.AddSubResource("legal-hold"); if (publicRequest.IsSetContentMD5()) { request.Headers.Add(HeaderKeys.ContentMD5Header, S3Transforms.ToStringValue(publicRequest.ContentMD5)); } if (publicRequest.IsSetRequestPayer()) { request.Headers.Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(publicRequest.RequestPayer.ToString())); } if (!publicRequest.IsSetBucketName()) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "publicRequest.BucketName"); } uriResourcePath = uriResourcePath.Replace("{Bucket}", StringUtils.FromString(publicRequest.BucketName)); if (!publicRequest.IsSetKey()) { throw new System.ArgumentException("Key is a required property and must be set before making this call.", "publicRequest.Key"); } uriResourcePath = uriResourcePath.Replace("{Key+}", StringUtils.FromString(publicRequest.Key)); if (publicRequest.IsSetVersionId()) { request.Parameters.Add("versionId", StringUtils.FromString(publicRequest.VersionId)); } request.ResourcePath = uriResourcePath; var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true })) { if (publicRequest.IsSetLegalHold()) { xmlWriter.WriteStartElement("LegalHold", "http://s3.amazonaws.com/doc/2006-03-01/"); if (publicRequest.LegalHold.IsSetStatus()) { xmlWriter.WriteElementString("Status", "http://s3.amazonaws.com/doc/2006-03-01/", StringUtils.FromString(publicRequest.LegalHold.Status)); } xmlWriter.WriteEndElement(); } } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } request.UseQueryString = true; return(request); }
public IRequest Marshall(PutLifecycleConfigurationRequest putLifecycleConfigurationRequest) { IRequest request = new DefaultRequest(putLifecycleConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; var uriResourcePath = string.Concat("/", S3Transforms.ToStringValue(putLifecycleConfigurationRequest.BucketName)); request.Parameters.Add("lifecycle", null); request.CanonicalResource = S3Transforms.GetCanonicalResource(uriResourcePath, request.Parameters); request.ResourcePath = S3Transforms.FormatResourcePath(uriResourcePath, request.Parameters); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var lifecycleConfigurationLifecycleConfiguration = putLifecycleConfigurationRequest.Configuration; if (lifecycleConfigurationLifecycleConfiguration != null) { xmlWriter.WriteStartElement("LifecycleConfiguration", ""); if (lifecycleConfigurationLifecycleConfiguration != null) { var lifecycleConfigurationLifecycleConfigurationrulesList = lifecycleConfigurationLifecycleConfiguration.Rules; if (lifecycleConfigurationLifecycleConfigurationrulesList != null && lifecycleConfigurationLifecycleConfigurationrulesList.Count > 0) { foreach (var lifecycleConfigurationLifecycleConfigurationrulesListValue in lifecycleConfigurationLifecycleConfigurationrulesList) { xmlWriter.WriteStartElement("Rule", ""); if (lifecycleConfigurationLifecycleConfigurationrulesListValue != null) { var expiration = lifecycleConfigurationLifecycleConfigurationrulesListValue.Expiration; if (expiration != null) { xmlWriter.WriteStartElement("Expiration", ""); if (expiration.IsSetDate()) { xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(expiration.Date)); } if (expiration.IsSetDays()) { xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(expiration.Days)); } xmlWriter.WriteEndElement(); } var transition = lifecycleConfigurationLifecycleConfigurationrulesListValue.Transition; if (transition != null) { xmlWriter.WriteStartElement("Transition", ""); if (transition.IsSetDate()) { xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(transition.Date)); } if (transition.IsSetDays()) { xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(transition.Days)); } if (transition.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(transition.StorageClass)); } xmlWriter.WriteEndElement(); } var noncurrentVersionExpiration = lifecycleConfigurationLifecycleConfigurationrulesListValue.NoncurrentVersionExpiration; if (noncurrentVersionExpiration != null) { xmlWriter.WriteStartElement("NoncurrentVersionExpiration", ""); if (noncurrentVersionExpiration.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(noncurrentVersionExpiration.NoncurrentDays)); } xmlWriter.WriteEndElement(); } var noncurrentVersionTransition = lifecycleConfigurationLifecycleConfigurationrulesListValue.NoncurrentVersionTransition; if (noncurrentVersionTransition != null) { xmlWriter.WriteStartElement("NoncurrentVersionTransition", ""); if (noncurrentVersionTransition.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(noncurrentVersionTransition.NoncurrentDays)); } if (noncurrentVersionTransition.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(noncurrentVersionTransition.StorageClass)); } xmlWriter.WriteEndElement(); } } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Id)); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Prefix)); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Status)); } else { xmlWriter.WriteElementString("Status", "", "Disabled"); } xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; request.Parameters[S3QueryParameter.ContentType.ToString()] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[Amazon.Util.AWSSDKUtils.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } if (!request.UseQueryString) { var queryString = Amazon.Util.AWSSDKUtils.GetParametersAsString(request.Parameters); if (!string.IsNullOrEmpty(queryString)) { request.ResourcePath = string.Concat(request.ResourcePath, request.ResourcePath.Contains("?") ? "&" : "?", queryString); } } return(request); }
public IRequest Marshall(PutBucketRequest putBucketRequest) { IRequest request = new DefaultRequest(putBucketRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (putBucketRequest.IsSetCannedACL()) { request.Headers.Add(HeaderKeys.XAmzAclHeader, putBucketRequest.CannedACL.Value); } else if (putBucketRequest.Grants != null && putBucketRequest.Grants.Count > 0) { ConvertPutWithACLRequest(putBucketRequest, request); } if (putBucketRequest.IsSetObjectLockEnabledForBucket()) { request.Headers.Add("x-amz-bucket-object-lock-enabled", S3Transforms.ToStringValue(putBucketRequest.ObjectLockEnabledForBucket)); } if (string.IsNullOrEmpty(putBucketRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutBucketRequest.BucketName"); } request.MarshallerVersion = 2; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketRequest.BucketName)); var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { string regionCode = null; var region = putBucketRequest.BucketRegion; if (region != null && !string.IsNullOrEmpty(region.Value)) { regionCode = region.Value; } else if (!string.IsNullOrEmpty(putBucketRequest.BucketRegionName)) { if (putBucketRequest.BucketRegionName == "eu-west-1") { regionCode = "EU"; } else if (putBucketRequest.BucketRegionName != "us-east-1") { regionCode = putBucketRequest.BucketRegionName; } } if (regionCode != null) { xmlWriter.WriteStartElement("CreateBucketConfiguration", ""); xmlWriter.WriteElementString("LocationConstraint", "", regionCode); xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketMetricsConfigurationRequest PutBucketMetricsConfigurationRequest) { IRequest request = new DefaultRequest(PutBucketMetricsConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (PutBucketMetricsConfigurationRequest.IsSetExpectedBucketOwner()) { request.Headers.Add(S3Constants.AmzHeaderExpectedBucketOwner, S3Transforms.ToStringValue(PutBucketMetricsConfigurationRequest.ExpectedBucketOwner)); } if (string.IsNullOrEmpty(PutBucketMetricsConfigurationRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutBucketMetricsConfigurationRequest.BucketName"); } request.MarshallerVersion = 2; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(PutBucketMetricsConfigurationRequest.BucketName)); request.AddSubResource("metrics"); request.AddSubResource("id", PutBucketMetricsConfigurationRequest.MetricsId); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var metricsConfiguration = PutBucketMetricsConfigurationRequest.MetricsConfiguration; if (metricsConfiguration != null) { xmlWriter.WriteStartElement("MetricsConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (metricsConfiguration != null) { if (metricsConfiguration.IsSetMetricsId()) { xmlWriter.WriteElementString("Id", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(metricsConfiguration.MetricsId)); } if (metricsConfiguration.IsSetMetricsFilter()) { xmlWriter.WriteStartElement("Filter", "http://s3.amazonaws.com/doc/2006-03-01/"); var filterPredicate = metricsConfiguration.MetricsFilter.MetricsFilterPredicate; filterPredicate.Accept(new MetricsPredicateVisitor(xmlWriter)); xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(DeleteObjectsRequest deleteObjectsRequest) { IRequest request = new DefaultRequest(deleteObjectsRequest, "AmazonS3"); request.HttpMethod = "POST"; if (deleteObjectsRequest.IsSetBypassGovernanceRetention()) { request.Headers.Add("x-amz-bypass-governance-retention", S3Transforms.ToStringValue(deleteObjectsRequest.BypassGovernanceRetention)); } if (deleteObjectsRequest.IsSetMfaCodes()) { request.Headers.Add(HeaderKeys.XAmzMfaHeader, deleteObjectsRequest.MfaCodes.FormattedMfaCodes); } if (deleteObjectsRequest.IsSetRequestPayer()) { request.Headers.Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(deleteObjectsRequest.RequestPayer.ToString())); } if (string.IsNullOrEmpty(deleteObjectsRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "DeleteObjectsRequest.BucketName"); } request.MarshallerVersion = 2; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(deleteObjectsRequest.BucketName)); request.AddSubResource("delete"); var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("Delete", ""); var deleteDeleteobjectsList = deleteObjectsRequest.Objects; if (deleteDeleteobjectsList != null && deleteDeleteobjectsList.Count > 0) { foreach (var deleteDeleteobjectsListValue in deleteDeleteobjectsList) { xmlWriter.WriteStartElement("Object", ""); if (deleteDeleteobjectsListValue.IsSetKey()) { xmlWriter.WriteElementString("Key", "", S3Transforms.ToXmlStringValue(deleteDeleteobjectsListValue.Key)); } if (deleteDeleteobjectsListValue.IsSetVersionId()) { xmlWriter.WriteElementString("VersionId", "", S3Transforms.ToXmlStringValue(deleteDeleteobjectsListValue.VersionId)); } xmlWriter.WriteEndElement(); } } if (deleteObjectsRequest.IsSetQuiet()) { xmlWriter.WriteElementString("Quiet", "", S3Transforms.ToXmlStringValue(deleteObjectsRequest.Quiet)); } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutACLRequest putObjectAclRequest) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_034a: Unknown result type (might be due to invalid IL or missing references) IRequest val = new DefaultRequest(putObjectAclRequest, "AmazonS3"); val.set_HttpMethod("PUT"); if (putObjectAclRequest.IsSetCannedACL()) { val.get_Headers().Add("x-amz-acl", S3Transforms.ToStringValue(ConstantClass.op_Implicit(putObjectAclRequest.CannedACL))); } val.set_ResourcePath(string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(putObjectAclRequest.BucketName), S3Transforms.ToStringValue(putObjectAclRequest.Key))); val.AddSubResource("acl"); if (putObjectAclRequest.IsSetVersionId()) { val.AddSubResource("versionId", S3Transforms.ToStringValue(putObjectAclRequest.VersionId)); } StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { S3AccessControlList accessControlList = putObjectAclRequest.AccessControlList; if (accessControlList != null) { xmlWriter.WriteStartElement("AccessControlPolicy", ""); List <S3Grant> grants = accessControlList.Grants; if (grants != null && grants.Count > 0) { xmlWriter.WriteStartElement("AccessControlList", ""); foreach (S3Grant item in grants) { xmlWriter.WriteStartElement("Grant", ""); if (item != null) { S3Grantee grantee = item.Grantee; if (grantee != null) { xmlWriter.WriteStartElement("Grantee", ""); if (grantee.IsSetType()) { xmlWriter.WriteAttributeString("xsi", "type", "http://www.w3.org/2001/XMLSchema-instance", ((object)grantee.Type).ToString()); } if (grantee.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(grantee.DisplayName)); } if (grantee.IsSetEmailAddress()) { xmlWriter.WriteElementString("EmailAddress", "", S3Transforms.ToXmlStringValue(grantee.EmailAddress)); } if (grantee.IsSetCanonicalUser()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(grantee.CanonicalUser)); } if (grantee.IsSetURI()) { xmlWriter.WriteElementString("URI", "", S3Transforms.ToXmlStringValue(grantee.URI)); } xmlWriter.WriteEndElement(); } if (item.IsSetPermission()) { xmlWriter.WriteElementString("Permission", "", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(item.Permission))); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); Owner owner = accessControlList.Owner; if (owner != null) { xmlWriter.WriteStartElement("Owner", ""); if (owner.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(owner.DisplayName)); } if (owner.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(owner.Id)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { string text = stringWriter.ToString(); val.set_Content(Encoding.UTF8.GetBytes(text)); val.get_Headers()["Content-Type"] = "application/xml"; string value = AmazonS3Util.GenerateChecksumForContent(text, fBase64Encode: true); val.get_Headers()["Content-MD5"] = value; return(val); } catch (EncoderFallbackException ex) { throw new AmazonServiceException("Unable to marshall request to XML", (Exception)ex); } }
public IRequest Marshall(PutBucketInventoryConfigurationRequest putBucketInventoryConfigurationRequest) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0360: Unknown result type (might be due to invalid IL or missing references) IRequest val = new DefaultRequest(putBucketInventoryConfigurationRequest, "AmazonS3"); val.set_HttpMethod("PUT"); val.set_ResourcePath("/" + S3Transforms.ToStringValue(putBucketInventoryConfigurationRequest.BucketName)); val.AddSubResource("inventory"); if (putBucketInventoryConfigurationRequest.IsSetInventoryId()) { val.AddSubResource("id", S3Transforms.ToStringValue(putBucketInventoryConfigurationRequest.InventoryId)); } StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { if (putBucketInventoryConfigurationRequest.IsSetInventoryConfiguration()) { InventoryConfiguration inventoryConfiguration = putBucketInventoryConfigurationRequest.InventoryConfiguration; xmlWriter.WriteStartElement("InventoryConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (inventoryConfiguration != null) { if (inventoryConfiguration.IsSetDestination()) { InventoryDestination destination = inventoryConfiguration.Destination; xmlWriter.WriteStartElement("Destination", "http://s3.amazonaws.com/doc/2006-03-01/"); if (destination.isSetS3BucketDestination()) { InventoryS3BucketDestination s3BucketDestination = destination.S3BucketDestination; xmlWriter.WriteStartElement("S3BucketDestination", "http://s3.amazonaws.com/doc/2006-03-01/"); if (s3BucketDestination.IsSetAccountId()) { xmlWriter.WriteElementString("AccountId", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(s3BucketDestination.AccountId)); } if (s3BucketDestination.IsSetBucketName()) { xmlWriter.WriteElementString("Bucket", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(s3BucketDestination.BucketName)); } if (s3BucketDestination.IsSetInventoryFormat()) { xmlWriter.WriteElementString("Format", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(s3BucketDestination.InventoryFormat))); } if (s3BucketDestination.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(s3BucketDestination.Prefix)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteElementString("IsEnabled", "http://s3.amazonaws.com/doc/2006-03-01/", inventoryConfiguration.IsEnabled.ToString().ToLowerInvariant()); if (inventoryConfiguration.IsSetInventoryFilter()) { xmlWriter.WriteStartElement("Filter", "http://s3.amazonaws.com/doc/2006-03-01/"); inventoryConfiguration.InventoryFilter.InventoryFilterPredicate.Accept(new InventoryPredicateVisitor(xmlWriter)); xmlWriter.WriteEndElement(); } if (inventoryConfiguration.IsSetInventoryId()) { xmlWriter.WriteElementString("Id", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryConfiguration.InventoryId)); } if (inventoryConfiguration.IsSetIncludedObjectVersions()) { xmlWriter.WriteElementString("IncludedObjectVersions", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(inventoryConfiguration.IncludedObjectVersions))); } if (inventoryConfiguration.IsSetInventoryOptionalFields()) { xmlWriter.WriteStartElement("OptionalFields", "http://s3.amazonaws.com/doc/2006-03-01/"); foreach (InventoryOptionalField inventoryOptionalField in inventoryConfiguration.InventoryOptionalFields) { xmlWriter.WriteElementString("Field", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(inventoryOptionalField))); } xmlWriter.WriteEndElement(); } if (inventoryConfiguration.IsSetSchedule()) { xmlWriter.WriteStartElement("Schedule", "http://s3.amazonaws.com/doc/2006-03-01/"); InventorySchedule schedule = inventoryConfiguration.Schedule; if (schedule.IsFrequency()) { xmlWriter.WriteElementString("Frequency", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(schedule.Frequency))); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { string text = stringWriter.ToString(); val.set_Content(Encoding.UTF8.GetBytes(text)); val.get_Headers()["Content-Type"] = "application/xml"; string value = AmazonS3Util.GenerateChecksumForContent(text, fBase64Encode: true); val.get_Headers()["Content-MD5"] = value; return(val); } catch (EncoderFallbackException ex) { throw new AmazonServiceException("Unable to marshall request to XML", (Exception)ex); } }
public IRequest Marshall(DeleteObjectsRequest deleteObjectsRequest) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_01fb: Unknown result type (might be due to invalid IL or missing references) IRequest val = new DefaultRequest(deleteObjectsRequest, "AmazonS3"); val.set_HttpMethod("POST"); if (deleteObjectsRequest.IsSetMfaCodes()) { val.get_Headers().Add("x-amz-mfa", deleteObjectsRequest.MfaCodes.FormattedMfaCodes); } if (deleteObjectsRequest.IsSetRequestPayer()) { val.get_Headers().Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(((object)deleteObjectsRequest.RequestPayer).ToString())); } val.set_ResourcePath("/" + S3Transforms.ToStringValue(deleteObjectsRequest.BucketName)); val.AddSubResource("delete"); StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("Delete", ""); List <KeyVersion> objects = deleteObjectsRequest.Objects; if (objects != null && objects.Count > 0) { foreach (KeyVersion item in objects) { xmlWriter.WriteStartElement("Object", ""); if (item.IsSetKey()) { xmlWriter.WriteElementString("Key", "", S3Transforms.ToXmlStringValue(item.Key)); } if (item.IsSetVersionId()) { xmlWriter.WriteElementString("VersionId", "", S3Transforms.ToXmlStringValue(item.VersionId)); } xmlWriter.WriteEndElement(); } } if (deleteObjectsRequest.IsSetQuiet()) { xmlWriter.WriteElementString("Quiet", "", deleteObjectsRequest.Quiet.ToString().ToLowerInvariant()); } xmlWriter.WriteEndElement(); } try { string text = stringWriter.ToString(); val.set_Content(Encoding.UTF8.GetBytes(text)); val.get_Headers()["Content-Type"] = "application/xml"; string value = AmazonS3Util.GenerateChecksumForContent(text, fBase64Encode: true); val.get_Headers()["Content-MD5"] = value; return(val); } catch (EncoderFallbackException ex) { throw new AmazonServiceException("Unable to marshall request to XML", (Exception)ex); } }
/// <summary> /// Marshaller the request object to the HTTP request. /// </summary> /// <param name="publicRequest"></param> /// <returns></returns> public IRequest Marshall(PutObjectLockConfigurationRequest publicRequest) { var request = new DefaultRequest(publicRequest, "AmazonS3"); request.HttpMethod = "PUT"; string uriResourcePath = "/{Bucket}"; request.AddSubResource("object-lock"); if (publicRequest.IsSetContentMD5()) { request.Headers.Add(HeaderKeys.ContentMD5Header, S3Transforms.ToStringValue(publicRequest.ContentMD5)); } if (publicRequest.IsSetRequestPayer()) { request.Headers.Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(publicRequest.RequestPayer.ToString())); } if (publicRequest.IsSetToken()) { request.Headers.Add("x-amz-bucket-object-lock-token", publicRequest.Token); } if (!publicRequest.IsSetBucketName()) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "publicRequest.BucketName"); } uriResourcePath = uriResourcePath.Replace("{Bucket}", StringUtils.FromString(publicRequest.BucketName)); request.MarshallerVersion = 2; request.ResourcePath = uriResourcePath; var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true })) { if (publicRequest.IsSetObjectLockConfiguration()) { xmlWriter.WriteStartElement("ObjectLockConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (publicRequest.ObjectLockConfiguration.IsSetObjectLockEnabled()) { xmlWriter.WriteElementString("ObjectLockEnabled", "http://s3.amazonaws.com/doc/2006-03-01/", StringUtils.FromString(publicRequest.ObjectLockConfiguration.ObjectLockEnabled)); } if (publicRequest.ObjectLockConfiguration.Rule != null) { xmlWriter.WriteStartElement("Rule", "http://s3.amazonaws.com/doc/2006-03-01/"); if (publicRequest.ObjectLockConfiguration.Rule.DefaultRetention != null) { xmlWriter.WriteStartElement("DefaultRetention", "http://s3.amazonaws.com/doc/2006-03-01/"); if (publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.IsSetDays()) { xmlWriter.WriteElementString("Days", "http://s3.amazonaws.com/doc/2006-03-01/", StringUtils.FromInt(publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.Days)); } if (publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.IsSetMode()) { xmlWriter.WriteElementString("Mode", "http://s3.amazonaws.com/doc/2006-03-01/", StringUtils.FromString(publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.Mode)); } if (publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.IsSetYears()) { xmlWriter.WriteElementString("Years", "http://s3.amazonaws.com/doc/2006-03-01/", StringUtils.FromInt(publicRequest.ObjectLockConfiguration.Rule.DefaultRetention.Years)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutPublicAccessBlockRequest putPutPublicAccessBlockRequest) { IRequest request = new DefaultRequest(putPutPublicAccessBlockRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (string.IsNullOrEmpty(putPutPublicAccessBlockRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "putPutPublicAccessBlockRequest.BucketName"); } request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putPutPublicAccessBlockRequest.BucketName)); request.AddSubResource("publicAccessBlock"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var publicAccessBlockConfiguration = putPutPublicAccessBlockRequest.PublicAccessBlockConfiguration; if (publicAccessBlockConfiguration != null) { xmlWriter.WriteStartElement("PublicAccessBlockConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (publicAccessBlockConfiguration.IsSetBlockPublicAcls()) { xmlWriter.WriteElementString("BlockPublicAcls", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(publicAccessBlockConfiguration.BlockPublicAcls)); } if (publicAccessBlockConfiguration.IsSetIgnorePublicAcls()) { xmlWriter.WriteElementString("IgnorePublicAcls", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(publicAccessBlockConfiguration.IgnorePublicAcls)); } if (publicAccessBlockConfiguration.IsSetBlockPublicPolicy()) { xmlWriter.WriteElementString("BlockPublicPolicy", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(publicAccessBlockConfiguration.BlockPublicPolicy)); } if (publicAccessBlockConfiguration.IsSetRestrictPublicBuckets()) { xmlWriter.WriteElementString("RestrictPublicBuckets", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(publicAccessBlockConfiguration.RestrictPublicBuckets)); } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; string checksum = AmazonS3Util.GenerateChecksumForContent(content, true); if (putPutPublicAccessBlockRequest.IsSetContentMD5()) { checksum = putPutPublicAccessBlockRequest.ContentMD5; } request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(CompleteMultipartUploadRequest completeMultipartUploadRequest) { IRequest request = new DefaultRequest(completeMultipartUploadRequest, "AmazonS3"); request.HttpMethod = "POST"; var uriResourcePath = string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(completeMultipartUploadRequest.BucketName), S3Transforms.ToStringValue(completeMultipartUploadRequest.Key)); request.Parameters.Add("uploadId", S3Transforms.ToStringValue(completeMultipartUploadRequest.UploadId)); request.CanonicalResource = S3Transforms.GetCanonicalResource(uriResourcePath, request.Parameters); request.ResourcePath = S3Transforms.FormatResourcePath(uriResourcePath, request.Parameters); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("CompleteMultipartUpload", ""); var multipartUploadMultipartUploadpartsList = completeMultipartUploadRequest.PartETags; multipartUploadMultipartUploadpartsList.Sort(); if (multipartUploadMultipartUploadpartsList != null && multipartUploadMultipartUploadpartsList.Count > 0) { foreach (var multipartUploadMultipartUploadpartsListValue in multipartUploadMultipartUploadpartsList) { xmlWriter.WriteStartElement("Part", ""); if (multipartUploadMultipartUploadpartsListValue.IsSetETag()) { xmlWriter.WriteElementString("ETag", "", S3Transforms.ToXmlStringValue(multipartUploadMultipartUploadpartsListValue.ETag)); } if (multipartUploadMultipartUploadpartsListValue.IsSetPartNumber()) { xmlWriter.WriteElementString("PartNumber", "", S3Transforms.ToXmlStringValue(multipartUploadMultipartUploadpartsListValue.PartNumber)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; request.Parameters[S3QueryParameter.ContentType.ToString()] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[Amazon.Util.AWSSDKUtils.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } if (!request.UseQueryString) { var queryString = Amazon.Util.AWSSDKUtils.GetParametersAsString(request.Parameters); if (!string.IsNullOrEmpty(queryString)) { request.ResourcePath = string.Concat(request.ResourcePath, request.ResourcePath.Contains("?") ? "&" : "?", queryString); } } return(request); }
public IRequest Marshall(PutBucketReplicationRequest putBucketreplicationRequest) { IRequest request = new DefaultRequest(putBucketreplicationRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (string.IsNullOrEmpty(putBucketreplicationRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutBucketReplicationRequest.BucketName"); } request.MarshallerVersion = 2; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketreplicationRequest.BucketName)); request.AddSubResource("replication"); if (putBucketreplicationRequest.IsSetToken()) { request.Headers.Add("x-amz-bucket-object-lock-token", putBucketreplicationRequest.Token); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var replicationConfiguration = putBucketreplicationRequest.Configuration; if (replicationConfiguration != null) { xmlWriter.WriteStartElement("ReplicationConfiguration", ""); if (replicationConfiguration.Role != null) { xmlWriter.WriteElementString("Role", "", S3Transforms.ToXmlStringValue(replicationConfiguration.Role)); } if (replicationConfiguration.Rules != null) { foreach (var rule in replicationConfiguration.Rules) { xmlWriter.WriteStartElement("Rule"); if (rule.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(rule.Id)); } if (rule.IsSetPriority()) { xmlWriter.WriteElementString("Priority", "", S3Transforms.ToXmlStringValue(rule.Priority)); } if (rule.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(rule.Prefix)); } if (rule.IsSetFilter()) { xmlWriter.WriteStartElement("Filter", ""); if (rule.Filter.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(rule.Filter.Prefix)); } if (rule.Filter.IsSetTag()) { rule.Filter.Tag.Marshall("Tag", xmlWriter); } if (rule.Filter.IsSetAnd()) { xmlWriter.WriteStartElement("And"); if (rule.Filter.And.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(rule.Filter.And.Prefix)); } if (rule.Filter.And.IsSetTags()) { foreach (var tag in rule.Filter.And.Tags) { tag.Marshall("Tag", xmlWriter); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (rule.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(rule.Status.ToString())); } if (rule.IsSetSourceSelectionCriteria()) { xmlWriter.WriteStartElement("SourceSelectionCriteria"); if (rule.SourceSelectionCriteria.IsSetSseKmsEncryptedObjects()) { xmlWriter.WriteStartElement("SseKmsEncryptedObjects"); if (rule.SourceSelectionCriteria.SseKmsEncryptedObjects.IsSetSseKmsEncryptedObjectsStatus()) { xmlWriter.WriteElementString("Status", "", rule.SourceSelectionCriteria.SseKmsEncryptedObjects.SseKmsEncryptedObjectsStatus); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (rule.IsSetExistingObjectReplication()) { xmlWriter.WriteStartElement("ExistingObjectReplication"); if (rule.ExistingObjectReplication.IsSetExistingObjectReplicationStatus()) { xmlWriter.WriteElementString("Status", "", rule.ExistingObjectReplication.Status); } xmlWriter.WriteEndElement(); } if (rule.IsSetDeleteMarkerReplication()) { xmlWriter.WriteStartElement("DeleteMarkerReplication"); if (rule.DeleteMarkerReplication.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", rule.DeleteMarkerReplication.Status); } xmlWriter.WriteEndElement(); } if (rule.IsSetDestination()) { xmlWriter.WriteStartElement("Destination", ""); if (rule.Destination.IsSetBucketArn()) { xmlWriter.WriteElementString("Bucket", "", rule.Destination.BucketArn); } if (rule.Destination.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", rule.Destination.StorageClass); } if (rule.Destination.IsSetAccountId()) { xmlWriter.WriteElementString("Account", "", S3Transforms.ToXmlStringValue(rule.Destination.AccountId)); } if (rule.Destination.IsSetEncryptionConfiguration()) { xmlWriter.WriteStartElement("EncryptionConfiguration"); if (rule.Destination.EncryptionConfiguration.isSetReplicaKmsKeyID()) { xmlWriter.WriteElementString("ReplicaKmsKeyID", "", S3Transforms.ToXmlStringValue(rule.Destination.EncryptionConfiguration.ReplicaKmsKeyID)); } xmlWriter.WriteEndElement(); } if (rule.Destination.IsSetMetrics()) { xmlWriter.WriteStartElement("Metrics"); if (rule.Destination.Metrics.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(rule.Destination.Metrics.Status)); } if (rule.Destination.Metrics.IsSetEventThreshold()) { xmlWriter.WriteStartElement("EventThreshold"); if (rule.Destination.Metrics.EventThreshold.IsSetMinutes()) { xmlWriter.WriteElementString("Minutes", "", S3Transforms.ToXmlStringValue(rule.Destination.Metrics.EventThreshold.Minutes)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (rule.Destination.IsSetReplicationTime()) { xmlWriter.WriteStartElement("ReplicationTime"); if (rule.Destination.ReplicationTime.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(rule.Destination.ReplicationTime.Status)); } if (rule.Destination.ReplicationTime.IsSetTime()) { xmlWriter.WriteStartElement("Time"); if (rule.Destination.ReplicationTime.Time.IsSetMinutes()) { xmlWriter.WriteElementString("Minutes", "", S3Transforms.ToXmlStringValue(rule.Destination.ReplicationTime.Time.Minutes)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (rule.Destination.IsSetAccessControlTranslation()) { xmlWriter.WriteStartElement("AccessControlTranslation"); if (rule.Destination.AccessControlTranslation.IsSetOwner()) { xmlWriter.WriteElementString("Owner", "", S3Transforms.ToXmlStringValue(rule.Destination.AccessControlTranslation.Owner)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketLoggingRequest putBucketLoggingRequest) { IRequest request = new DefaultRequest(putBucketLoggingRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketLoggingRequest.BucketName)); request.AddSubResource("logging"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("BucketLoggingStatus", ""); var bucketLoggingStatusBucketLoggingStatus = putBucketLoggingRequest.LoggingConfig; if (bucketLoggingStatusBucketLoggingStatus != null) { if (bucketLoggingStatusBucketLoggingStatus != null) { var loggingEnabledLoggingEnabled = bucketLoggingStatusBucketLoggingStatus; if (loggingEnabledLoggingEnabled != null && loggingEnabledLoggingEnabled.IsSetTargetBucket()) { xmlWriter.WriteStartElement("LoggingEnabled", ""); xmlWriter.WriteElementString("TargetBucket", "", S3Transforms.ToXmlStringValue(loggingEnabledLoggingEnabled.TargetBucketName)); var loggingEnabledLoggingEnabledtargetGrantsList = loggingEnabledLoggingEnabled.Grants; if (loggingEnabledLoggingEnabledtargetGrantsList != null && loggingEnabledLoggingEnabledtargetGrantsList.Count > 0) { xmlWriter.WriteStartElement("TargetGrants", ""); foreach (var loggingEnabledLoggingEnabledtargetGrantsListValue in loggingEnabledLoggingEnabledtargetGrantsList) { xmlWriter.WriteStartElement("Grant", ""); if (loggingEnabledLoggingEnabledtargetGrantsListValue != null) { var granteeGrantee = loggingEnabledLoggingEnabledtargetGrantsListValue.Grantee; if (granteeGrantee != null) { xmlWriter.WriteStartElement("Grantee", ""); if (granteeGrantee.IsSetType()) { xmlWriter.WriteAttributeString("xsi", "type", "http://www.w3.org/2001/XMLSchema-instance", granteeGrantee.Type.ToString()); } if (granteeGrantee.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(granteeGrantee.DisplayName)); } if (granteeGrantee.IsSetEmailAddress()) { xmlWriter.WriteElementString("EmailAddress", "", S3Transforms.ToXmlStringValue(granteeGrantee.EmailAddress)); } if (granteeGrantee.IsSetCanonicalUser()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(granteeGrantee.CanonicalUser)); } if (granteeGrantee.IsSetURI()) { xmlWriter.WriteElementString("URI", "", S3Transforms.ToXmlStringValue(granteeGrantee.URI)); } xmlWriter.WriteEndElement(); } if (loggingEnabledLoggingEnabledtargetGrantsListValue.IsSetPermission()) { xmlWriter.WriteElementString("Permission", "", S3Transforms.ToXmlStringValue(loggingEnabledLoggingEnabledtargetGrantsListValue.Permission)); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (loggingEnabledLoggingEnabled.IsSetTargetPrefix()) { xmlWriter.WriteElementString("TargetPrefix", "", S3Transforms.ToXmlStringValue(loggingEnabledLoggingEnabled.TargetPrefix)); } else { xmlWriter.WriteStartElement("TargetPrefix"); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutLifecycleConfigurationRequest putLifecycleConfigurationRequest) { IRequest request = new DefaultRequest(putLifecycleConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (string.IsNullOrEmpty(putLifecycleConfigurationRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutLifecycleConfigurationRequest.BucketName"); } request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putLifecycleConfigurationRequest.BucketName)); request.AddSubResource("lifecycle"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var lifecycleConfigurationLifecycleConfiguration = putLifecycleConfigurationRequest.Configuration; if (lifecycleConfigurationLifecycleConfiguration != null) { xmlWriter.WriteStartElement("LifecycleConfiguration", ""); if (lifecycleConfigurationLifecycleConfiguration != null) { var lifecycleConfigurationLifecycleConfigurationrulesList = lifecycleConfigurationLifecycleConfiguration.Rules; if (lifecycleConfigurationLifecycleConfigurationrulesList != null && lifecycleConfigurationLifecycleConfigurationrulesList.Count > 0) { foreach (var lifecycleConfigurationLifecycleConfigurationrulesListValue in lifecycleConfigurationLifecycleConfigurationrulesList) { xmlWriter.WriteStartElement("Rule", ""); if (lifecycleConfigurationLifecycleConfigurationrulesListValue != null) { var expiration = lifecycleConfigurationLifecycleConfigurationrulesListValue.Expiration; if (expiration != null) { xmlWriter.WriteStartElement("Expiration", ""); if (expiration.IsSetDate()) { xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(expiration.Date)); } if (expiration.IsSetDays()) { xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(expiration.Days)); } if (expiration.IsSetExpiredObjectDeleteMarker()) { xmlWriter.WriteElementString("ExpiredObjectDeleteMarker", "", expiration.ExpiredObjectDeleteMarker.ToString().ToLowerInvariant()); } xmlWriter.WriteEndElement(); } var transitions = lifecycleConfigurationLifecycleConfigurationrulesListValue.Transitions; if (transitions != null && transitions.Count > 0) { foreach (var transition in transitions) { if (transition != null) { xmlWriter.WriteStartElement("Transition", ""); if (transition.IsSetDate()) { xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(transition.Date)); } if (transition.IsSetDays()) { xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(transition.Days)); } if (transition.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(transition.StorageClass)); } xmlWriter.WriteEndElement(); } } } var noncurrentVersionExpiration = lifecycleConfigurationLifecycleConfigurationrulesListValue.NoncurrentVersionExpiration; if (noncurrentVersionExpiration != null) { xmlWriter.WriteStartElement("NoncurrentVersionExpiration", ""); if (noncurrentVersionExpiration.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(noncurrentVersionExpiration.NoncurrentDays)); } xmlWriter.WriteEndElement(); } var noncurrentVersionTransitions = lifecycleConfigurationLifecycleConfigurationrulesListValue.NoncurrentVersionTransitions; if (noncurrentVersionTransitions != null && noncurrentVersionTransitions.Count > 0) { foreach (var noncurrentVersionTransition in noncurrentVersionTransitions) { if (noncurrentVersionTransition != null) { xmlWriter.WriteStartElement("NoncurrentVersionTransition", ""); if (noncurrentVersionTransition.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(noncurrentVersionTransition.NoncurrentDays)); } if (noncurrentVersionTransition.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(noncurrentVersionTransition.StorageClass)); } xmlWriter.WriteEndElement(); } } } var abortIncompleteMultipartUpload = lifecycleConfigurationLifecycleConfigurationrulesListValue.AbortIncompleteMultipartUpload; if (abortIncompleteMultipartUpload != null) { xmlWriter.WriteStartElement("AbortIncompleteMultipartUpload", ""); if (abortIncompleteMultipartUpload.IsSetDaysAfterInitiation()) { xmlWriter.WriteElementString("DaysAfterInitiation", "", S3Transforms.ToXmlStringValue(abortIncompleteMultipartUpload.DaysAfterInitiation)); } xmlWriter.WriteEndElement(); } } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Id)); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetPrefix() && lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetFilter()) { throw new AmazonClientException("LifecycleRule.Prefix is deprecated. Please only use LifecycleRule.Filter."); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Prefix)); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetFilter()) { xmlWriter.WriteStartElement("Filter", ""); if (lifecycleConfigurationLifecycleConfigurationrulesListValue.Filter.IsSetLifecycleFilterPredicate()) { lifecycleConfigurationLifecycleConfigurationrulesListValue.Filter.LifecycleFilterPredicate.Accept(new LifecycleFilterPredicateMarshallVisitor(xmlWriter)); } xmlWriter.WriteEndElement(); } if (lifecycleConfigurationLifecycleConfigurationrulesListValue.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(lifecycleConfigurationLifecycleConfigurationrulesListValue.Status)); } else { xmlWriter.WriteElementString("Status", "", "Disabled"); } xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketWebsiteRequest putBucketWebsiteRequest) { IRequest request = new DefaultRequest(putBucketWebsiteRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketWebsiteRequest.BucketName)); request.AddSubResource("website"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var websiteConfigurationWebsiteConfiguration = putBucketWebsiteRequest.WebsiteConfiguration; if (websiteConfigurationWebsiteConfiguration != null) { xmlWriter.WriteStartElement("WebsiteConfiguration", ""); if (websiteConfigurationWebsiteConfiguration != null) { string errorDocumentErrorDocument = websiteConfigurationWebsiteConfiguration.ErrorDocument; if (errorDocumentErrorDocument != null) { xmlWriter.WriteStartElement("ErrorDocument", ""); xmlWriter.WriteElementString("Key", "", S3Transforms.ToXmlStringValue(errorDocumentErrorDocument)); xmlWriter.WriteEndElement(); } } if (websiteConfigurationWebsiteConfiguration != null) { string indexDocumentIndexDocument = websiteConfigurationWebsiteConfiguration.IndexDocumentSuffix; if (indexDocumentIndexDocument != null) { xmlWriter.WriteStartElement("IndexDocument", ""); xmlWriter.WriteElementString("Suffix", "", S3Transforms.ToXmlStringValue(indexDocumentIndexDocument)); xmlWriter.WriteEndElement(); } } if (websiteConfigurationWebsiteConfiguration != null) { var redirectAllRequestsToRedirectAllRequestsTo = websiteConfigurationWebsiteConfiguration.RedirectAllRequestsTo; if (redirectAllRequestsToRedirectAllRequestsTo != null) { xmlWriter.WriteStartElement("RedirectAllRequestsTo", ""); if (redirectAllRequestsToRedirectAllRequestsTo.IsSetHostName()) { xmlWriter.WriteElementString("HostName", "", S3Transforms.ToXmlStringValue(redirectAllRequestsToRedirectAllRequestsTo.HostName)); } if (redirectAllRequestsToRedirectAllRequestsTo.IsSetHttpRedirectCode()) { xmlWriter.WriteElementString("HttpRedirectCode", "", S3Transforms.ToXmlStringValue(redirectAllRequestsToRedirectAllRequestsTo.HttpRedirectCode)); } if (redirectAllRequestsToRedirectAllRequestsTo.IsSetProtocol()) { xmlWriter.WriteElementString("Protocol", "", S3Transforms.ToXmlStringValue(redirectAllRequestsToRedirectAllRequestsTo.Protocol)); } if (redirectAllRequestsToRedirectAllRequestsTo.IsSetReplaceKeyPrefixWith()) { xmlWriter.WriteElementString("ReplaceKeyPrefixWith", "", S3Transforms.ToXmlStringValue(redirectAllRequestsToRedirectAllRequestsTo.ReplaceKeyPrefixWith)); } if (redirectAllRequestsToRedirectAllRequestsTo.IsSetReplaceKeyWith()) { xmlWriter.WriteElementString("ReplaceKeyWith", "", S3Transforms.ToXmlStringValue(redirectAllRequestsToRedirectAllRequestsTo.ReplaceKeyWith)); } xmlWriter.WriteEndElement(); } } if (websiteConfigurationWebsiteConfiguration != null) { var websiteConfigurationWebsiteConfigurationroutingRulesList = websiteConfigurationWebsiteConfiguration.RoutingRules; if (websiteConfigurationWebsiteConfigurationroutingRulesList != null && websiteConfigurationWebsiteConfigurationroutingRulesList.Count > 0) { xmlWriter.WriteStartElement("RoutingRules", ""); foreach (var websiteConfigurationWebsiteConfigurationroutingRulesListValue in websiteConfigurationWebsiteConfigurationroutingRulesList) { xmlWriter.WriteStartElement("RoutingRule", ""); if (websiteConfigurationWebsiteConfigurationroutingRulesListValue != null) { var conditionCondition = websiteConfigurationWebsiteConfigurationroutingRulesListValue.Condition; if (conditionCondition != null) { xmlWriter.WriteStartElement("Condition", ""); if (conditionCondition.IsSetHttpErrorCodeReturnedEquals()) { xmlWriter.WriteElementString("HttpErrorCodeReturnedEquals", "", S3Transforms.ToXmlStringValue(conditionCondition.HttpErrorCodeReturnedEquals)); } if (conditionCondition.IsSetKeyPrefixEquals()) { xmlWriter.WriteElementString("KeyPrefixEquals", "", S3Transforms.ToXmlStringValue(conditionCondition.KeyPrefixEquals)); } xmlWriter.WriteEndElement(); } } if (websiteConfigurationWebsiteConfigurationroutingRulesListValue != null) { var redirectRedirect = websiteConfigurationWebsiteConfigurationroutingRulesListValue.Redirect; if (redirectRedirect != null) { xmlWriter.WriteStartElement("Redirect", ""); if (redirectRedirect.IsSetHostName()) { xmlWriter.WriteElementString("HostName", "", S3Transforms.ToXmlStringValue(redirectRedirect.HostName)); } if (redirectRedirect.IsSetHttpRedirectCode()) { xmlWriter.WriteElementString("HttpRedirectCode", "", S3Transforms.ToXmlStringValue(redirectRedirect.HttpRedirectCode)); } if (redirectRedirect.IsSetProtocol()) { xmlWriter.WriteElementString("Protocol", "", S3Transforms.ToXmlStringValue(redirectRedirect.Protocol)); } if (redirectRedirect.IsSetReplaceKeyPrefixWith()) { xmlWriter.WriteElementString("ReplaceKeyPrefixWith", "", S3Transforms.ToXmlStringValue(redirectRedirect.ReplaceKeyPrefixWith)); } if (redirectRedirect.IsSetReplaceKeyWith()) { xmlWriter.WriteElementString("ReplaceKeyWith", "", S3Transforms.ToXmlStringValue(redirectRedirect.ReplaceKeyWith)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketRequest putBucketRequest) { IRequest request = new DefaultRequest(putBucketRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (putBucketRequest.IsSetCannedACL()) { request.Headers.Add("x-amz-acl", putBucketRequest.CannedACL.Value); } else if (putBucketRequest.Grants != null && putBucketRequest.Grants.Count > 0) { ConvertPutWithACLRequest(putBucketRequest, request); } var uriResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketRequest.BucketName)); request.CanonicalResource = uriResourcePath; request.ResourcePath = uriResourcePath; var stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { string regionCode = null; var region = putBucketRequest.BucketRegion; if (region != null && !string.IsNullOrEmpty(region.Value)) { regionCode = region.Value; } else if (!string.IsNullOrEmpty(putBucketRequest.BucketRegionName)) { if (putBucketRequest.BucketRegionName == "eu-west-1") { regionCode = "EU"; } else if (putBucketRequest.BucketRegionName != "us-east-1") { regionCode = putBucketRequest.BucketRegionName; } } if (regionCode != null) { xmlWriter.WriteStartElement("PutBucketConfiguration", ""); xmlWriter.WriteElementString("LocationConstraint", "", regionCode); xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; request.Parameters[S3QueryParameter.ContentType.ToString()] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[Amazon.Util.AWSSDKUtils.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } if (!request.UseQueryString) { var queryString = Amazon.Util.AWSSDKUtils.GetParametersAsString(request.Parameters); if (!string.IsNullOrEmpty(queryString)) { request.ResourcePath = string.Concat(request.ResourcePath, request.ResourcePath.Contains("?") ? "&" : "?", queryString); } } return(request); }
public IRequest Marshall(PutBucketAnalyticsConfigurationRequest putBucketAnalyticsConfigurationRequest) { IRequest request = new DefaultRequest(putBucketAnalyticsConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (string.IsNullOrEmpty(putBucketAnalyticsConfigurationRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutBucketAnalyticsConfigurationRequest.BucketName"); } request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketAnalyticsConfigurationRequest.BucketName)); request.AddSubResource("analytics"); if (putBucketAnalyticsConfigurationRequest.IsSetAnalyticsId()) { request.AddSubResource("id", S3Transforms.ToStringValue(putBucketAnalyticsConfigurationRequest.AnalyticsId)); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { if (putBucketAnalyticsConfigurationRequest.IsSetAnalyticsConfiguration()) { var analyticsConfiguration = putBucketAnalyticsConfigurationRequest.AnalyticsConfiguration; xmlWriter.WriteStartElement("AnalyticsConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (analyticsConfiguration.IsSetAnalyticsId()) { xmlWriter.WriteElementString("Id", "http://s3.amazonaws.com/doc/2006-03-01/", analyticsConfiguration.AnalyticsId); } if (analyticsConfiguration.IsSetAnalyticsFilter()) { xmlWriter.WriteStartElement("Filter", "http://s3.amazonaws.com/doc/2006-03-01/"); var predicate = analyticsConfiguration.AnalyticsFilter.AnalyticsFilterPredicate; predicate.Accept(new AnalyticsPredicateVisitor(xmlWriter)); xmlWriter.WriteEndElement(); } if (analyticsConfiguration.IsSetStorageClassAnalysis()) { if (analyticsConfiguration.IsSetStorageClassAnalysis()) { StorageClassAnalysis storageClassAnalysis = analyticsConfiguration.StorageClassAnalysis; xmlWriter.WriteStartElement("StorageClassAnalysis", "http://s3.amazonaws.com/doc/2006-03-01/"); if (storageClassAnalysis.IsSetDataExport()) { xmlWriter.WriteStartElement("DataExport", "http://s3.amazonaws.com/doc/2006-03-01/"); StorageClassAnalysisDataExport storageClassAnalysisDataExport = storageClassAnalysis.DataExport; if (storageClassAnalysisDataExport.IsSetOutputSchemaVersion()) { StorageClassAnalysisSchemaVersion storageClassAnalysisSchemaVersion = storageClassAnalysisDataExport.OutputSchemaVersion; if (storageClassAnalysisSchemaVersion != null) { xmlWriter.WriteElementString("OutputSchemaVersion", "http://s3.amazonaws.com/doc/2006-03-01/", storageClassAnalysisSchemaVersion); } } if (storageClassAnalysisDataExport.IsSetDestination()) { xmlWriter.WriteStartElement("Destination", "http://s3.amazonaws.com/doc/2006-03-01/"); AnalyticsExportDestination analyticsExportDestination = storageClassAnalysisDataExport.Destination; if (analyticsExportDestination.IsSetS3BucketDestination()) { xmlWriter.WriteStartElement("S3BucketDestination", "http://s3.amazonaws.com/doc/2006-03-01/"); AnalyticsS3BucketDestination analyticsS3BucketDestination = analyticsExportDestination.S3BucketDestination; if (analyticsS3BucketDestination.IsSetFormat()) { xmlWriter.WriteElementString("Format", "http://s3.amazonaws.com/doc/2006-03-01/", analyticsS3BucketDestination.Format); } if (analyticsS3BucketDestination.IsSetBucketAccountId()) { xmlWriter.WriteElementString("BucketAccountId", "http://s3.amazonaws.com/doc/2006-03-01/", analyticsS3BucketDestination.BucketAccountId); } if (analyticsS3BucketDestination.IsSetBucketName()) { xmlWriter.WriteElementString("Bucket", "http://s3.amazonaws.com/doc/2006-03-01/", analyticsS3BucketDestination.BucketName); } if (analyticsS3BucketDestination.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "http://s3.amazonaws.com/doc/2006-03-01/", analyticsS3BucketDestination.Prefix); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutACLRequest putObjectAclRequest) { IRequest request = new DefaultRequest(putObjectAclRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (putObjectAclRequest.IsSetCannedACL()) { request.Headers.Add(HeaderKeys.XAmzAclHeader, S3Transforms.ToStringValue(putObjectAclRequest.CannedACL)); } if (string.IsNullOrEmpty(putObjectAclRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "PutACLRequest.BucketName"); } //Not checking if Key is null or empty because PutAcl allows to put an ACL for both a Bucket or an Object. TODO: deprecate PutAcl and create two separate operations // if we are putting the acl onto the bucket, the keyname component will collapse to empty string request.ResourcePath = string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(putObjectAclRequest.BucketName), S3Transforms.ToStringValue(putObjectAclRequest.Key)); request.AddSubResource("acl"); if (putObjectAclRequest.IsSetVersionId()) { request.AddSubResource("versionId", S3Transforms.ToStringValue(putObjectAclRequest.VersionId)); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using ( var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var accessControlPolicyAccessControlPolicy = putObjectAclRequest.AccessControlList; if (accessControlPolicyAccessControlPolicy != null) { xmlWriter.WriteStartElement("AccessControlPolicy", ""); var accessControlPolicyAccessControlPolicygrantsList = accessControlPolicyAccessControlPolicy.Grants; if (accessControlPolicyAccessControlPolicygrantsList != null && accessControlPolicyAccessControlPolicygrantsList.Count > 0) { accessControlPolicyAccessControlPolicy.Marshall("AccessControlList", xmlWriter); var ownerOwner = accessControlPolicyAccessControlPolicy.Owner; if (ownerOwner != null) { xmlWriter.WriteStartElement("Owner", ""); if (ownerOwner.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(ownerOwner.DisplayName)); } if (ownerOwner.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(ownerOwner.Id)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; string checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(CompleteMultipartUploadRequest completeMultipartUploadRequest) { IRequest request = new DefaultRequest(completeMultipartUploadRequest, "AmazonS3"); request.HttpMethod = "POST"; if (completeMultipartUploadRequest.IsSetRequestPayer()) { request.Headers.Add(S3Constants.AmzHeaderRequestPayer, S3Transforms.ToStringValue(completeMultipartUploadRequest.RequestPayer.ToString())); } if (string.IsNullOrEmpty(completeMultipartUploadRequest.BucketName)) { throw new System.ArgumentException("BucketName is a required property and must be set before making this call.", "CompleteMultipartUploadRequest.BucketName"); } if (string.IsNullOrEmpty(completeMultipartUploadRequest.Key)) { throw new System.ArgumentException("Key is a required property and must be set before making this call.", "CompleteMultipartUploadRequest.Key"); } request.ResourcePath = string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(completeMultipartUploadRequest.BucketName), S3Transforms.ToStringValue(completeMultipartUploadRequest.Key)); request.AddSubResource("uploadId", S3Transforms.ToStringValue(completeMultipartUploadRequest.UploadId)); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("CompleteMultipartUpload", ""); var multipartUploadMultipartUploadpartsList = completeMultipartUploadRequest.PartETags; multipartUploadMultipartUploadpartsList.Sort(); if (multipartUploadMultipartUploadpartsList != null && multipartUploadMultipartUploadpartsList.Count > 0) { foreach (var multipartUploadMultipartUploadpartsListValue in multipartUploadMultipartUploadpartsList) { xmlWriter.WriteStartElement("Part", ""); if (multipartUploadMultipartUploadpartsListValue.IsSetETag()) { xmlWriter.WriteElementString("ETag", "", S3Transforms.ToXmlStringValue(multipartUploadMultipartUploadpartsListValue.ETag)); } if (multipartUploadMultipartUploadpartsListValue.IsSetPartNumber()) { xmlWriter.WriteElementString("PartNumber", "", S3Transforms.ToXmlStringValue(multipartUploadMultipartUploadpartsListValue.PartNumber)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketLoggingRequest putBucketLoggingRequest) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0303: Unknown result type (might be due to invalid IL or missing references) IRequest val = new DefaultRequest(putBucketLoggingRequest, "AmazonS3"); val.set_HttpMethod("PUT"); val.set_ResourcePath("/" + S3Transforms.ToStringValue(putBucketLoggingRequest.BucketName)); val.AddSubResource("logging"); StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture); using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { xmlWriter.WriteStartElement("BucketLoggingStatus", ""); S3BucketLoggingConfig loggingConfig = putBucketLoggingRequest.LoggingConfig; if (loggingConfig != null && loggingConfig != null) { S3BucketLoggingConfig s3BucketLoggingConfig = loggingConfig; if (s3BucketLoggingConfig != null && s3BucketLoggingConfig.IsSetTargetBucket()) { xmlWriter.WriteStartElement("LoggingEnabled", ""); xmlWriter.WriteElementString("TargetBucket", "", S3Transforms.ToXmlStringValue(s3BucketLoggingConfig.TargetBucketName)); List <S3Grant> grants = s3BucketLoggingConfig.Grants; if (grants != null && grants.Count > 0) { xmlWriter.WriteStartElement("TargetGrants", ""); foreach (S3Grant item in grants) { xmlWriter.WriteStartElement("Grant", ""); if (item != null) { S3Grantee grantee = item.Grantee; if (grantee != null) { xmlWriter.WriteStartElement("Grantee", ""); if (grantee.IsSetType()) { xmlWriter.WriteAttributeString("xsi", "type", "http://www.w3.org/2001/XMLSchema-instance", ((object)grantee.Type).ToString()); } if (grantee.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(grantee.DisplayName)); } if (grantee.IsSetEmailAddress()) { xmlWriter.WriteElementString("EmailAddress", "", S3Transforms.ToXmlStringValue(grantee.EmailAddress)); } if (grantee.IsSetCanonicalUser()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(grantee.CanonicalUser)); } if (grantee.IsSetURI()) { xmlWriter.WriteElementString("URI", "", S3Transforms.ToXmlStringValue(grantee.URI)); } xmlWriter.WriteEndElement(); } if (item.IsSetPermission()) { xmlWriter.WriteElementString("Permission", "", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(item.Permission))); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (s3BucketLoggingConfig.IsSetTargetPrefix()) { xmlWriter.WriteElementString("TargetPrefix", "", S3Transforms.ToXmlStringValue(s3BucketLoggingConfig.TargetPrefix)); } else { xmlWriter.WriteStartElement("TargetPrefix"); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } try { string text = stringWriter.ToString(); val.set_Content(Encoding.UTF8.GetBytes(text)); val.get_Headers()["Content-Type"] = "application/xml"; string value = AmazonS3Util.GenerateChecksumForContent(text, fBase64Encode: true); val.get_Headers()["Content-MD5"] = value; return(val); } catch (EncoderFallbackException ex) { throw new AmazonServiceException("Unable to marshall request to XML", (Exception)ex); } }
public IRequest Marshall(PutCORSConfigurationRequest putCORSConfigurationRequest) { IRequest request = new DefaultRequest(putCORSConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putCORSConfigurationRequest.BucketName)); request.AddSubResource("cors"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var configuration = putCORSConfigurationRequest.Configuration; if (configuration != null) { xmlWriter.WriteStartElement("CORSConfiguration", ""); if (configuration != null) { var cORSConfigurationCORSConfigurationcORSRulesList = configuration.Rules; if (cORSConfigurationCORSConfigurationcORSRulesList != null && cORSConfigurationCORSConfigurationcORSRulesList.Count > 0) { foreach (var cORSConfigurationCORSConfigurationcORSRulesListValue in cORSConfigurationCORSConfigurationcORSRulesList) { xmlWriter.WriteStartElement("CORSRule", ""); if (cORSConfigurationCORSConfigurationcORSRulesListValue != null) { var cORSRuleMemberallowedMethodsList = cORSConfigurationCORSConfigurationcORSRulesListValue.AllowedMethods; if (cORSRuleMemberallowedMethodsList != null && cORSRuleMemberallowedMethodsList.Count > 0) { foreach (string cORSRuleMemberallowedMethodsListValue in cORSRuleMemberallowedMethodsList) { xmlWriter.WriteStartElement("AllowedMethod", ""); xmlWriter.WriteValue(cORSRuleMemberallowedMethodsListValue); xmlWriter.WriteEndElement(); } } } if (cORSConfigurationCORSConfigurationcORSRulesListValue != null) { var cORSRuleMemberallowedOriginsList = cORSConfigurationCORSConfigurationcORSRulesListValue.AllowedOrigins; if (cORSRuleMemberallowedOriginsList != null && cORSRuleMemberallowedOriginsList.Count > 0) { foreach (string cORSRuleMemberallowedOriginsListValue in cORSRuleMemberallowedOriginsList) { xmlWriter.WriteStartElement("AllowedOrigin", ""); xmlWriter.WriteValue(cORSRuleMemberallowedOriginsListValue); xmlWriter.WriteEndElement(); } } } if (cORSConfigurationCORSConfigurationcORSRulesListValue != null) { var cORSRuleMemberexposeHeadersList = cORSConfigurationCORSConfigurationcORSRulesListValue.ExposeHeaders; if (cORSRuleMemberexposeHeadersList != null && cORSRuleMemberexposeHeadersList.Count > 0) { foreach (string cORSRuleMemberexposeHeadersListValue in cORSRuleMemberexposeHeadersList) { xmlWriter.WriteStartElement("ExposeHeader", ""); xmlWriter.WriteValue(cORSRuleMemberexposeHeadersListValue); xmlWriter.WriteEndElement(); } } } if (cORSConfigurationCORSConfigurationcORSRulesListValue != null) { var cORSRuleMemberallowedHeadersList = cORSConfigurationCORSConfigurationcORSRulesListValue.AllowedHeaders; if (cORSRuleMemberallowedHeadersList != null && cORSRuleMemberallowedHeadersList.Count > 0) { foreach (string cORSRuleMemberallowedHeadersListValue in cORSRuleMemberallowedHeadersList) { xmlWriter.WriteStartElement("AllowedHeader", ""); xmlWriter.WriteValue(cORSRuleMemberallowedHeadersListValue); xmlWriter.WriteEndElement(); } } } if (cORSConfigurationCORSConfigurationcORSRulesListValue.IsSetMaxAgeSeconds()) { xmlWriter.WriteElementString("MaxAgeSeconds", "", S3Transforms.ToXmlStringValue(cORSConfigurationCORSConfigurationcORSRulesListValue.MaxAgeSeconds)); } if (cORSConfigurationCORSConfigurationcORSRulesListValue.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(cORSConfigurationCORSConfigurationcORSRulesListValue.Id)); } xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
private void UploadToCdn() { try { // one thread only if (Interlocked.CompareExchange(ref work, 1, 0) == 0) { var @continue = false; try { CdnItem item; if (queue.TryDequeue(out item)) { @continue = true; var cdnpath = GetCdnPath(item.Bundle.Path); var key = new Uri(cdnpath).PathAndQuery.TrimStart('/'); var content = Encoding.UTF8.GetBytes(item.Response.Content); var inputStream = new MemoryStream(); if (ClientSettings.GZipEnabled) { using (var zip = new GZipStream(inputStream, CompressionMode.Compress, true)) { zip.Write(content, 0, content.Length); zip.Flush(); } } else { inputStream.Write(content, 0, content.Length); } var checksum = AmazonS3Util.GenerateChecksumForContent(item.Response.Content, true); var config = new AmazonS3Config { RegionEndpoint = RegionEndpoint.GetBySystemName(s3region), UseHttp = true }; using (var s3 = new AmazonS3Client(s3publickey, s3privatekey, config)) { var upload = false; try { var request = new GetObjectMetadataRequest { BucketName = s3bucket, Key = key, }; var response = s3.GetObjectMetadata(request); upload = !string.Equals(checksum, response.Metadata["x-amz-meta-etag"], StringComparison.InvariantCultureIgnoreCase); } catch (AmazonS3Exception ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { upload = true; } else { throw; } } if (upload) { var request = new PutObjectRequest { BucketName = s3bucket, CannedACL = S3CannedACL.PublicRead, AutoCloseStream = true, AutoResetStreamPosition = true, Key = key, ContentType = AmazonS3Util.MimeTypeFromExtension(Path.GetExtension(key).ToLowerInvariant()), InputStream = inputStream }; if (ClientSettings.GZipEnabled) { request.Headers.ContentEncoding = "gzip"; } var cache = TimeSpan.FromDays(365); request.Headers.CacheControl = string.Format("public, maxage={0}", (int)cache.TotalSeconds); request.Headers.Expires = DateTime.UtcNow.Add(cache); request.Headers["x-amz-meta-etag"] = checksum; s3.PutObject(request); } else { inputStream.Close(); } item.Bundle.CdnPath = cdnpath; } } } catch (Exception err) { log.Error(err); } finally { work = 0; if (@continue) { Action upload = () => UploadToCdn(); upload.BeginInvoke(null, null); } } } } catch (Exception fatal) { log.Fatal(fatal); } }
public IRequest Marshall(PutBucketInventoryConfigurationRequest putBucketInventoryConfigurationRequest) { IRequest request = new DefaultRequest(putBucketInventoryConfigurationRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketInventoryConfigurationRequest.BucketName)); request.AddSubResource("inventory"); if (putBucketInventoryConfigurationRequest.IsSetInventoryId()) { request.AddSubResource("id", S3Transforms.ToStringValue(putBucketInventoryConfigurationRequest.InventoryId)); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { if (putBucketInventoryConfigurationRequest.IsSetInventoryConfiguration()) { var inventoryConfiguration = putBucketInventoryConfigurationRequest.InventoryConfiguration; xmlWriter.WriteStartElement("InventoryConfiguration", "http://s3.amazonaws.com/doc/2006-03-01/"); if (inventoryConfiguration != null) { if (inventoryConfiguration.IsSetDestination()) { InventoryDestination inventoryDestination = inventoryConfiguration.Destination; xmlWriter.WriteStartElement("Destination", "http://s3.amazonaws.com/doc/2006-03-01/"); if (inventoryDestination.isSetS3BucketDestination()) { InventoryS3BucketDestination inventoryS3BucketDestination = inventoryDestination.S3BucketDestination; xmlWriter.WriteStartElement("S3BucketDestination", "http://s3.amazonaws.com/doc/2006-03-01/"); if (inventoryS3BucketDestination.IsSetAccountId()) { xmlWriter.WriteElementString("AccountId", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryS3BucketDestination.AccountId)); } if (inventoryS3BucketDestination.IsSetBucketName()) { xmlWriter.WriteElementString("Bucket", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryS3BucketDestination.BucketName)); } if (inventoryS3BucketDestination.IsSetInventoryFormat()) { xmlWriter.WriteElementString("Format", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryS3BucketDestination.InventoryFormat)); } if (inventoryS3BucketDestination.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryS3BucketDestination.Prefix)); } if (inventoryS3BucketDestination.IsSetInventoryEncryption()) { xmlWriter.WriteStartElement("Encryption", "http://s3.amazonaws.com/doc/2006-03-01/"); var inventoryEncryption = inventoryS3BucketDestination.InventoryEncryption; if (inventoryEncryption.IsSetSSEKMS()) { xmlWriter.WriteStartElement("SSE-KMS", "http://s3.amazonaws.com/doc/2006-03-01/"); if (inventoryEncryption.SSEKMS.IsSetKeyId()) { xmlWriter.WriteElementString("KeyId", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryEncryption.SSEKMS.KeyId)); } xmlWriter.WriteEndElement(); } if (inventoryEncryption.IsSetSSES3()) { xmlWriter.WriteStartElement("SSE-S3", "http://s3.amazonaws.com/doc/2006-03-01/"); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteElementString("IsEnabled", "http://s3.amazonaws.com/doc/2006-03-01/", inventoryConfiguration.IsEnabled.ToString().ToLowerInvariant()); if (inventoryConfiguration.IsSetInventoryFilter()) { xmlWriter.WriteStartElement("Filter", "http://s3.amazonaws.com/doc/2006-03-01/"); var predicate = inventoryConfiguration.InventoryFilter.InventoryFilterPredicate; predicate.Accept(new InventoryPredicateVisitor(xmlWriter)); xmlWriter.WriteEndElement(); } if (inventoryConfiguration.IsSetInventoryId()) { xmlWriter.WriteElementString("Id", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryConfiguration.InventoryId)); } if (inventoryConfiguration.IsSetIncludedObjectVersions()) { xmlWriter.WriteElementString("IncludedObjectVersions", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryConfiguration.IncludedObjectVersions)); } if (inventoryConfiguration.IsSetInventoryOptionalFields()) { xmlWriter.WriteStartElement("OptionalFields", "http://s3.amazonaws.com/doc/2006-03-01/"); foreach (var inventoryOptionalField in inventoryConfiguration.InventoryOptionalFields) { xmlWriter.WriteElementString("Field", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventoryOptionalField)); } xmlWriter.WriteEndElement(); } if (inventoryConfiguration.IsSetSchedule()) { xmlWriter.WriteStartElement("Schedule", "http://s3.amazonaws.com/doc/2006-03-01/"); var inventorySchedule = inventoryConfiguration.Schedule; if (inventorySchedule.IsFrequency()) { xmlWriter.WriteElementString("Frequency", "http://s3.amazonaws.com/doc/2006-03-01/", S3Transforms.ToXmlStringValue(inventorySchedule.Frequency)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutACLRequest putObjectAclRequest) { IRequest request = new DefaultRequest(putObjectAclRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (putObjectAclRequest.IsSetCannedACL()) { request.Headers.Add(HeaderKeys.XAmzAclHeader, S3Transforms.ToStringValue(putObjectAclRequest.CannedACL)); } // if we are putting the acl onto the bucket, the keyname component will collapse to empty string request.ResourcePath = string.Format(CultureInfo.InvariantCulture, "/{0}/{1}", S3Transforms.ToStringValue(putObjectAclRequest.BucketName), S3Transforms.ToStringValue(putObjectAclRequest.Key)); request.AddSubResource("acl"); if (putObjectAclRequest.IsSetVersionId()) { request.AddSubResource("versionId", S3Transforms.ToStringValue(putObjectAclRequest.VersionId)); } var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using ( var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var accessControlPolicyAccessControlPolicy = putObjectAclRequest.AccessControlList; if (accessControlPolicyAccessControlPolicy != null) { xmlWriter.WriteStartElement("AccessControlPolicy", ""); var accessControlPolicyAccessControlPolicygrantsList = accessControlPolicyAccessControlPolicy.Grants; if (accessControlPolicyAccessControlPolicygrantsList != null && accessControlPolicyAccessControlPolicygrantsList.Count > 0) { xmlWriter.WriteStartElement("AccessControlList", ""); foreach ( var accessControlPolicyAccessControlPolicygrantsListValue in accessControlPolicyAccessControlPolicygrantsList) { xmlWriter.WriteStartElement("Grant", ""); if (accessControlPolicyAccessControlPolicygrantsListValue != null) { var granteeGrantee = accessControlPolicyAccessControlPolicygrantsListValue.Grantee; if (granteeGrantee != null) { xmlWriter.WriteStartElement("Grantee", ""); if (granteeGrantee.IsSetType()) { xmlWriter.WriteAttributeString("xsi", "type", "http://www.w3.org/2001/XMLSchema-instance", granteeGrantee.Type.ToString()); } if (granteeGrantee.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue( granteeGrantee.DisplayName)); } if (granteeGrantee.IsSetEmailAddress()) { xmlWriter.WriteElementString("EmailAddress", "", S3Transforms.ToXmlStringValue( granteeGrantee.EmailAddress)); } if (granteeGrantee.IsSetCanonicalUser()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue( granteeGrantee.CanonicalUser)); } if (granteeGrantee.IsSetURI()) { xmlWriter.WriteElementString("URI", "", S3Transforms.ToXmlStringValue( granteeGrantee.URI)); } xmlWriter.WriteEndElement(); } if (accessControlPolicyAccessControlPolicygrantsListValue.IsSetPermission()) { xmlWriter.WriteElementString("Permission", "", S3Transforms.ToXmlStringValue( accessControlPolicyAccessControlPolicygrantsListValue .Permission)); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); var ownerOwner = accessControlPolicyAccessControlPolicy.Owner; if (ownerOwner != null) { xmlWriter.WriteStartElement("Owner", ""); if (ownerOwner.IsSetDisplayName()) { xmlWriter.WriteElementString("DisplayName", "", S3Transforms.ToXmlStringValue(ownerOwner.DisplayName)); } if (ownerOwner.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(ownerOwner.Id)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; string checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketReplicationRequest putBucketreplicationRequest) { IRequest request = new DefaultRequest(putBucketreplicationRequest, "AmazonS3"); request.HttpMethod = "PUT"; request.ResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketreplicationRequest.BucketName)); request.AddSubResource("replication"); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var replicationConfiguration = putBucketreplicationRequest.Configuration; if (replicationConfiguration != null) { xmlWriter.WriteStartElement("ReplicationConfiguration", ""); if (replicationConfiguration.Role != null) { xmlWriter.WriteElementString("Role", "", S3Transforms.ToXmlStringValue(replicationConfiguration.Role)); } if (replicationConfiguration.Rules != null) { foreach (var rule in replicationConfiguration.Rules) { xmlWriter.WriteStartElement("Rule"); if (rule.IsSetId()) { xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(rule.Id)); } if (rule.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(rule.Prefix)); } else // Write an empty Prefix tag { xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue("")); } if (rule.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(rule.Status.ToString())); } if (rule.IsSetSourceSelectionCriteria()) { xmlWriter.WriteStartElement("SourceSelectionCriteria"); if (rule.SourceSelectionCriteria.IsSetSseKmsEncryptedObjects()) { xmlWriter.WriteStartElement("SseKmsEncryptedObjects"); if (rule.SourceSelectionCriteria.SseKmsEncryptedObjects.IsSetSseKmsEncryptedObjectsStatus()) { xmlWriter.WriteElementString("Status", "", rule.SourceSelectionCriteria.SseKmsEncryptedObjects.SseKmsEncryptedObjectsStatus); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (rule.IsSetDestination()) { xmlWriter.WriteStartElement("Destination", ""); if (rule.Destination.IsSetBucketArn()) { xmlWriter.WriteElementString("Bucket", "", rule.Destination.BucketArn); } if (rule.Destination.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "", rule.Destination.StorageClass); } if (rule.Destination.IsSetAccountId()) { xmlWriter.WriteElementString("Account", "", S3Transforms.ToXmlStringValue(rule.Destination.AccountId)); } if (rule.Destination.IsSetEncryptionConfiguration()) { xmlWriter.WriteStartElement("EncryptionConfiguration"); if (rule.Destination.EncryptionConfiguration.isSetReplicaKmsKeyID()) { xmlWriter.WriteElementString("ReplicaKmsKeyID", "", S3Transforms.ToXmlStringValue(rule.Destination.EncryptionConfiguration.ReplicaKmsKeyID)); } xmlWriter.WriteEndElement(); } if (rule.Destination.IsSetAccessControlTranslation()) { xmlWriter.WriteStartElement("AccessControlTranslation"); if (rule.Destination.AccessControlTranslation.IsSetOwner()) { xmlWriter.WriteElementString("Owner", "", S3Transforms.ToXmlStringValue(rule.Destination.AccessControlTranslation.Owner)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers[HeaderKeys.ContentTypeHeader] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[HeaderKeys.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } return(request); }
public IRequest Marshall(PutBucketVersioningRequest putBucketVersioningRequest) { IRequest request = new DefaultRequest(putBucketVersioningRequest, "AmazonS3"); request.HttpMethod = "PUT"; if (putBucketVersioningRequest.IsSetMfaCodes()) { request.Headers.Add("x-amz-mfa", putBucketVersioningRequest.MfaCodes.FormattedMfaCodes); } var uriResourcePath = string.Concat("/", S3Transforms.ToStringValue(putBucketVersioningRequest.BucketName)); request.Parameters.Add("versioning", null); request.CanonicalResource = S3Transforms.GetCanonicalResource(uriResourcePath, request.Parameters); request.ResourcePath = S3Transforms.FormatResourcePath(uriResourcePath, request.Parameters); var stringWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = Encoding.UTF8, OmitXmlDeclaration = true })) { var versioningConfigurationVersioningConfiguration = putBucketVersioningRequest.VersioningConfig; if (versioningConfigurationVersioningConfiguration != null) { xmlWriter.WriteStartElement("VersioningConfiguration", ""); if (versioningConfigurationVersioningConfiguration.IsSetEnableMfaDelete()) { xmlWriter.WriteElementString("MFADelete", "", versioningConfigurationVersioningConfiguration.EnableMfaDelete ? "Enabled" : "Disabled"); } if (versioningConfigurationVersioningConfiguration.IsSetStatus()) { xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(versioningConfigurationVersioningConfiguration.Status)); } xmlWriter.WriteEndElement(); } } try { var content = stringWriter.ToString(); request.Content = Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; request.Parameters[S3QueryParameter.ContentType.ToString()] = "application/xml"; var checksum = AmazonS3Util.GenerateChecksumForContent(content, true); request.Headers[Amazon.Util.AWSSDKUtils.ContentMD5Header] = checksum; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } if (!request.UseQueryString) { var queryString = Amazon.Util.AWSSDKUtils.GetParametersAsString(request.Parameters); if (!string.IsNullOrEmpty(queryString)) { request.ResourcePath = string.Concat(request.ResourcePath, request.ResourcePath.Contains("?") ? "&" : "?", queryString); } } return(request); }