/// <summary> /// Marshaller the request object to the HTTP request. /// </summary> /// <param name="publicRequest"></param> /// <returns></returns> public IRequest Marshall(DeleteMultiRegionAccessPointRequest publicRequest) { var request = new DefaultRequest(publicRequest, "Amazon.S3Control"); request.HttpMethod = "POST"; if (publicRequest.IsSetAccountId()) { request.Headers["x-amz-account-id"] = publicRequest.AccountId; } request.ResourcePath = "/v20180820/async-requests/mrap/delete"; var stringWriter = new XMLEncodedStringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true, NewLineHandling = NewLineHandling.Entitize })) { xmlWriter.WriteStartElement("DeleteMultiRegionAccessPointRequest", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequest.IsSetClientToken()) { xmlWriter.WriteElementString("ClientToken", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequest.ClientToken)); } else { xmlWriter.WriteElementString("ClientToken", "http://awss3control.amazonaws.com/doc/2018-08-20/", Guid.NewGuid().ToString()); } if (publicRequest.Details != null) { xmlWriter.WriteStartElement("Details", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequest.Details.IsSetName()) { xmlWriter.WriteElementString("Name", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequest.Details.Name)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; ChecksumUtils.SetRequestChecksumMD5(request); request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = "2018-08-20"; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } var hostPrefixLabels = new { AccountId = StringUtils.FromString(publicRequest.AccountId), }; if (!HostPrefixUtils.IsValidLabelValue(hostPrefixLabels.AccountId)) { throw new AmazonS3ControlException("AccountId can only contain alphanumeric characters and dashes and must be between 1 and 63 characters long."); } request.HostPrefix = $"{hostPrefixLabels.AccountId}."; return(request); }
/// <summary> /// Marshaller the request object to the HTTP request. /// </summary> /// <param name="publicRequest"></param> /// <returns></returns> public IRequest Marshall(CreateBucketRequest publicRequest) { var request = new DefaultRequest(publicRequest, "Amazon.S3Control"); request.HttpMethod = "PUT"; if (publicRequest.IsSetACL()) { request.Headers["x-amz-acl"] = publicRequest.ACL; } if (publicRequest.IsSetGrantFullControl()) { request.Headers["x-amz-grant-full-control"] = publicRequest.GrantFullControl; } if (publicRequest.IsSetGrantRead()) { request.Headers["x-amz-grant-read"] = publicRequest.GrantRead; } if (publicRequest.IsSetGrantReadACP()) { request.Headers["x-amz-grant-read-acp"] = publicRequest.GrantReadACP; } if (publicRequest.IsSetGrantWrite()) { request.Headers["x-amz-grant-write"] = publicRequest.GrantWrite; } if (publicRequest.IsSetGrantWriteACP()) { request.Headers["x-amz-grant-write-acp"] = publicRequest.GrantWriteACP; } if (publicRequest.IsSetObjectLockEnabledForBucket()) { request.Headers["x-amz-bucket-object-lock-enabled"] = StringUtils.FromBool(publicRequest.ObjectLockEnabledForBucket); } if (publicRequest.IsSetOutpostId()) { request.Headers["x-amz-outpost-id"] = publicRequest.OutpostId; } if (!publicRequest.IsSetBucket()) { throw new AmazonS3ControlException("Request object does not have required field Bucket set"); } request.AddPathResource("{name}", StringUtils.FromString(publicRequest.Bucket)); request.ResourcePath = "/v20180820/bucket/{name}"; var stringWriter = new XMLEncodedStringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true, NewLineHandling = NewLineHandling.Entitize })) { if (publicRequest.IsSetCreateBucketConfiguration()) { xmlWriter.WriteStartElement("CreateBucketConfiguration", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequest.CreateBucketConfiguration.IsSetLocationConstraint()) { xmlWriter.WriteElementString("LocationConstraint", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequest.CreateBucketConfiguration.LocationConstraint)); } xmlWriter.WriteEndElement(); } } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; ChecksumUtils.SetRequestChecksumMD5(request); request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = "2018-08-20"; } 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(PutBucketLifecycleConfigurationRequest publicRequest) { var request = new DefaultRequest(publicRequest, "Amazon.S3Control"); request.HttpMethod = "PUT"; if (Arn.IsArn(publicRequest.Bucket)) { publicRequest.AccountId = Amazon.S3Control.Internal.S3ArnUtils.GetAccountIdBasedOnArn( publicRequest.AccountId, Arn.Parse(publicRequest.Bucket).AccountId ); } if (publicRequest.IsSetAccountId()) { request.Headers["x-amz-account-id"] = publicRequest.AccountId; } if (!publicRequest.IsSetBucket()) { throw new AmazonS3ControlException("Request object does not have required field Bucket set"); } request.AddPathResource("{name}", StringUtils.FromString(publicRequest.Bucket)); request.ResourcePath = "/v20180820/bucket/{name}/lifecycleconfiguration"; var stringWriter = new XMLEncodedStringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true, NewLineHandling = NewLineHandling.Entitize })) { if (publicRequest.IsSetLifecycleConfiguration()) { xmlWriter.WriteStartElement("LifecycleConfiguration", "http://awss3control.amazonaws.com/doc/2018-08-20/"); var publicRequestLifecycleConfigurationRules = publicRequest.LifecycleConfiguration.Rules; if (publicRequestLifecycleConfigurationRules != null && publicRequestLifecycleConfigurationRules.Count > 0) { xmlWriter.WriteStartElement("Rules", "http://awss3control.amazonaws.com/doc/2018-08-20/"); foreach (var publicRequestLifecycleConfigurationRulesValue in publicRequestLifecycleConfigurationRules) { if (publicRequestLifecycleConfigurationRulesValue != null) { xmlWriter.WriteStartElement("Rule", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.AbortIncompleteMultipartUpload != null) { xmlWriter.WriteStartElement("AbortIncompleteMultipartUpload", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.AbortIncompleteMultipartUpload.IsSetDaysAfterInitiation()) { xmlWriter.WriteElementString("DaysAfterInitiation", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromInt(publicRequestLifecycleConfigurationRulesValue.AbortIncompleteMultipartUpload.DaysAfterInitiation)); } xmlWriter.WriteEndElement(); } if (publicRequestLifecycleConfigurationRulesValue.Expiration != null) { xmlWriter.WriteStartElement("Expiration", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.Expiration.IsSetDate()) { xmlWriter.WriteElementString("Date", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromDateTimeToISO8601(publicRequestLifecycleConfigurationRulesValue.Expiration.Date)); } if (publicRequestLifecycleConfigurationRulesValue.Expiration.IsSetDays()) { xmlWriter.WriteElementString("Days", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromInt(publicRequestLifecycleConfigurationRulesValue.Expiration.Days)); } if (publicRequestLifecycleConfigurationRulesValue.Expiration.IsSetExpiredObjectDeleteMarker()) { xmlWriter.WriteElementString("ExpiredObjectDeleteMarker", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromBool(publicRequestLifecycleConfigurationRulesValue.Expiration.ExpiredObjectDeleteMarker)); } xmlWriter.WriteEndElement(); } if (publicRequestLifecycleConfigurationRulesValue.Filter != null) { xmlWriter.WriteStartElement("Filter", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.Filter.And != null) { xmlWriter.WriteStartElement("And", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.Filter.And.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.Filter.And.Prefix)); } var publicRequestLifecycleConfigurationRulesValueFilterAndTags = publicRequestLifecycleConfigurationRulesValue.Filter.And.Tags; if (publicRequestLifecycleConfigurationRulesValueFilterAndTags != null && publicRequestLifecycleConfigurationRulesValueFilterAndTags.Count > 0) { xmlWriter.WriteStartElement("Tags", "http://awss3control.amazonaws.com/doc/2018-08-20/"); foreach (var publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue in publicRequestLifecycleConfigurationRulesValueFilterAndTags) { if (publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue != null) { xmlWriter.WriteStartElement("member", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue.IsSetKey()) { xmlWriter.WriteElementString("Key", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue.Key)); } if (publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue.IsSetValue()) { xmlWriter.WriteElementString("Value", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValueFilterAndTagsValue.Value)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (publicRequestLifecycleConfigurationRulesValue.Filter.IsSetPrefix()) { xmlWriter.WriteElementString("Prefix", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.Filter.Prefix)); } if (publicRequestLifecycleConfigurationRulesValue.Filter.Tag != null) { xmlWriter.WriteStartElement("Tag", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.Filter.Tag.IsSetKey()) { xmlWriter.WriteElementString("Key", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.Filter.Tag.Key)); } if (publicRequestLifecycleConfigurationRulesValue.Filter.Tag.IsSetValue()) { xmlWriter.WriteElementString("Value", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.Filter.Tag.Value)); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } if (publicRequestLifecycleConfigurationRulesValue.IsSetID()) { xmlWriter.WriteElementString("ID", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.ID)); } if (publicRequestLifecycleConfigurationRulesValue.NoncurrentVersionExpiration != null) { xmlWriter.WriteStartElement("NoncurrentVersionExpiration", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValue.NoncurrentVersionExpiration.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromInt(publicRequestLifecycleConfigurationRulesValue.NoncurrentVersionExpiration.NoncurrentDays)); } xmlWriter.WriteEndElement(); } var publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitions = publicRequestLifecycleConfigurationRulesValue.NoncurrentVersionTransitions; if (publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitions != null && publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitions.Count > 0) { xmlWriter.WriteStartElement("NoncurrentVersionTransitions", "http://awss3control.amazonaws.com/doc/2018-08-20/"); foreach (var publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue in publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitions) { if (publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue != null) { xmlWriter.WriteStartElement("NoncurrentVersionTransition", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue.IsSetNoncurrentDays()) { xmlWriter.WriteElementString("NoncurrentDays", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromInt(publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue.NoncurrentDays)); } if (publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValueNoncurrentVersionTransitionsValue.StorageClass)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } if (publicRequestLifecycleConfigurationRulesValue.IsSetStatus()) { xmlWriter.WriteElementString("Status", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValue.Status)); } var publicRequestLifecycleConfigurationRulesValueTransitions = publicRequestLifecycleConfigurationRulesValue.Transitions; if (publicRequestLifecycleConfigurationRulesValueTransitions != null && publicRequestLifecycleConfigurationRulesValueTransitions.Count > 0) { xmlWriter.WriteStartElement("Transitions", "http://awss3control.amazonaws.com/doc/2018-08-20/"); foreach (var publicRequestLifecycleConfigurationRulesValueTransitionsValue in publicRequestLifecycleConfigurationRulesValueTransitions) { if (publicRequestLifecycleConfigurationRulesValueTransitionsValue != null) { xmlWriter.WriteStartElement("Transition", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequestLifecycleConfigurationRulesValueTransitionsValue.IsSetDate()) { xmlWriter.WriteElementString("Date", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromDateTimeToISO8601(publicRequestLifecycleConfigurationRulesValueTransitionsValue.Date)); } if (publicRequestLifecycleConfigurationRulesValueTransitionsValue.IsSetDays()) { xmlWriter.WriteElementString("Days", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromInt(publicRequestLifecycleConfigurationRulesValueTransitionsValue.Days)); } if (publicRequestLifecycleConfigurationRulesValueTransitionsValue.IsSetStorageClass()) { xmlWriter.WriteElementString("StorageClass", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequestLifecycleConfigurationRulesValueTransitionsValue.StorageClass)); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; ChecksumUtils.SetRequestChecksumMD5(request); request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = "2018-08-20"; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } var hostPrefixLabels = new { AccountId = StringUtils.FromString(publicRequest.AccountId), }; if (!HostPrefixUtils.IsValidLabelValue(hostPrefixLabels.AccountId)) { throw new AmazonS3ControlException("AccountId can only contain alphanumeric characters and dashes and must be between 1 and 63 characters long."); } request.HostPrefix = $"{hostPrefixLabels.AccountId}."; return(request); }
/// <summary> /// Marshaller the request object to the HTTP request. /// </summary> /// <param name="publicRequest"></param> /// <returns></returns> public IRequest Marshall(PutBucketPolicyRequest publicRequest) { var request = new DefaultRequest(publicRequest, "Amazon.S3Control"); request.HttpMethod = "PUT"; if (Arn.IsArn(publicRequest.Bucket)) { publicRequest.AccountId = Amazon.S3Control.Internal.S3ArnUtils.GetAccountIdBasedOnArn( publicRequest.AccountId, Arn.Parse(publicRequest.Bucket).AccountId ); } if (publicRequest.IsSetAccountId()) { request.Headers["x-amz-account-id"] = publicRequest.AccountId; } if (publicRequest.IsSetConfirmRemoveSelfBucketAccess()) { request.Headers["x-amz-confirm-remove-self-bucket-access"] = StringUtils.FromBool(publicRequest.ConfirmRemoveSelfBucketAccess); } if (!publicRequest.IsSetBucket()) { throw new AmazonS3ControlException("Request object does not have required field Bucket set"); } request.AddPathResource("{name}", StringUtils.FromString(publicRequest.Bucket)); request.ResourcePath = "/v20180820/bucket/{name}/policy"; var stringWriter = new XMLEncodedStringWriter(CultureInfo.InvariantCulture); using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true, NewLineHandling = NewLineHandling.Entitize })) { xmlWriter.WriteStartElement("PutBucketPolicyRequest", "http://awss3control.amazonaws.com/doc/2018-08-20/"); if (publicRequest.IsSetPolicy()) { xmlWriter.WriteElementString("Policy", "http://awss3control.amazonaws.com/doc/2018-08-20/", StringUtils.FromString(publicRequest.Policy)); } xmlWriter.WriteEndElement(); } try { string content = stringWriter.ToString(); request.Content = System.Text.Encoding.UTF8.GetBytes(content); request.Headers["Content-Type"] = "application/xml"; ChecksumUtils.SetRequestChecksumMD5(request); request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = "2018-08-20"; } catch (EncoderFallbackException e) { throw new AmazonServiceException("Unable to marshall request to XML", e); } var hostPrefixLabels = new { AccountId = StringUtils.FromString(publicRequest.AccountId), }; if (!HostPrefixUtils.IsValidLabelValue(hostPrefixLabels.AccountId)) { throw new AmazonS3ControlException("AccountId can only contain alphanumeric characters and dashes and must be between 1 and 63 characters long."); } request.HostPrefix = $"{hostPrefixLabels.AccountId}."; return(request); }