/Amazon.CloudFront/Model/Internal/MarshallTransformations/UpdateStreamingDistributionRequestMarshaller.cs
C# | 215 lines | 175 code | 23 blank | 17 comment | 45 complexity | d2c4bb878d02c6655a557e814d7b58b6 MD5 | raw file
1/*
2 * Copyright 2010-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License").
5 * You may not use this file except in compliance with the License.
6 * A copy of the License is located at
7 *
8 * http://aws.amazon.com/apache2.0
9 *
10 * or in the "license" file accompanying this file. This file is distributed
11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12 * express or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15using System;
16using System.Collections.Generic;
17using System.IO;
18using System.Xml;
19using System.Xml.Serialization;
20using System.Text;
21
22using Amazon.CloudFront.Model;
23using Amazon.Runtime;
24using Amazon.Runtime.Internal;
25using Amazon.Runtime.Internal.Transform;
26using Amazon.Runtime.Internal.Util;
27
28namespace Amazon.CloudFront.Model.Internal.MarshallTransformations
29{
30 /// <summary>
31 /// Update Streaming Distribution Request Marshaller
32 /// </summary>
33 public class UpdateStreamingDistributionRequestMarshaller : IMarshaller<IRequest, UpdateStreamingDistributionRequest>
34 {
35
36
37 public IRequest Marshall(UpdateStreamingDistributionRequest updateStreamingDistributionRequest)
38 {
39 IRequest request = new DefaultRequest(updateStreamingDistributionRequest, "AmazonCloudFront");
40 request.HttpMethod = "PUT";
41 request.Headers.Add("If-Match", updateStreamingDistributionRequest.IfMatch);
42
43
44 string uriResourcePath = "2012-05-05/streaming-distribution/{Id}/config";
45 uriResourcePath = uriResourcePath.Replace("{Id}", updateStreamingDistributionRequest.Id ?? "" );
46
47 if (uriResourcePath.Contains("?"))
48 {
49 string queryString = uriResourcePath.Substring(uriResourcePath.IndexOf("?") + 1);
50 uriResourcePath = uriResourcePath.Substring(0, uriResourcePath.IndexOf("?"));
51
52 foreach (string s in queryString.Split('&'))
53 {
54 string[] nameValuePair = s.Split('=');
55 if (nameValuePair.Length == 2 && nameValuePair[1].Length > 0)
56 {
57 request.Parameters.Add(nameValuePair[0], nameValuePair[1]);
58 }
59 }
60 }
61
62 request.ResourcePath = uriResourcePath;
63
64
65 StringWriter stringWriter = new StringWriter();
66 XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
67 xmlWriter.Namespaces = true;
68
69 if (updateStreamingDistributionRequest != null)
70 {
71 StreamingDistributionConfig streamingDistributionConfigStreamingDistributionConfig = updateStreamingDistributionRequest.StreamingDistributionConfig;
72 if (streamingDistributionConfigStreamingDistributionConfig != null)
73 {
74 xmlWriter.WriteStartElement("StreamingDistributionConfig", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
75 if (streamingDistributionConfigStreamingDistributionConfig.IsSetCallerReference())
76 {
77 xmlWriter.WriteElementString("CallerReference", "http://cloudfront.amazonaws.com/doc/2012-05-05/", streamingDistributionConfigStreamingDistributionConfig.CallerReference.ToString());
78 }
79 if (streamingDistributionConfigStreamingDistributionConfig != null)
80 {
81 S3Origin s3OriginS3Origin = streamingDistributionConfigStreamingDistributionConfig.S3Origin;
82 if (s3OriginS3Origin != null)
83 {
84 xmlWriter.WriteStartElement("S3Origin", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
85 if (s3OriginS3Origin.IsSetDomainName())
86 {
87 xmlWriter.WriteElementString("DomainName", "http://cloudfront.amazonaws.com/doc/2012-05-05/", s3OriginS3Origin.DomainName.ToString());
88 }
89 if (s3OriginS3Origin.IsSetOriginAccessIdentity())
90 {
91 xmlWriter.WriteElementString("OriginAccessIdentity", "http://cloudfront.amazonaws.com/doc/2012-05-05/", s3OriginS3Origin.OriginAccessIdentity.ToString());
92 }
93 xmlWriter.WriteEndElement();
94 }
95 }
96 if (streamingDistributionConfigStreamingDistributionConfig != null)
97 {
98 Aliases aliasesAliases = streamingDistributionConfigStreamingDistributionConfig.Aliases;
99 if (aliasesAliases != null)
100 {
101 xmlWriter.WriteStartElement("Aliases", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
102 if (aliasesAliases.IsSetQuantity())
103 {
104 xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2012-05-05/", aliasesAliases.Quantity.ToString());
105 }
106
107 if (aliasesAliases != null)
108 {
109 List<string> aliasesAliasesitemsList = aliasesAliases.Items;
110 if (aliasesAliasesitemsList != null && aliasesAliasesitemsList.Count > 0)
111 {
112 int aliasesAliasesitemsListIndex = 1;
113 xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
114 foreach (string aliasesAliasesitemsListValue in aliasesAliasesitemsList)
115 {
116 xmlWriter.WriteStartElement("CNAME", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
117 xmlWriter.WriteValue(aliasesAliasesitemsListValue);
118 xmlWriter.WriteEndElement();
119
120
121 aliasesAliasesitemsListIndex++;
122 }
123 xmlWriter.WriteEndElement();
124 }
125 }
126 xmlWriter.WriteEndElement();
127 }
128 }
129 if (streamingDistributionConfigStreamingDistributionConfig.IsSetComment())
130 {
131 xmlWriter.WriteElementString("Comment", "http://cloudfront.amazonaws.com/doc/2012-05-05/", streamingDistributionConfigStreamingDistributionConfig.Comment.ToString());
132 }
133 if (streamingDistributionConfigStreamingDistributionConfig != null)
134 {
135 LoggingConfig loggingConfigLogging = streamingDistributionConfigStreamingDistributionConfig.Logging;
136 if (loggingConfigLogging != null)
137 {
138 xmlWriter.WriteStartElement("Logging", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
139 if (loggingConfigLogging.IsSetEnabled())
140 {
141 xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-05-05/", loggingConfigLogging.Enabled.ToString().ToLower());
142 }
143 if (loggingConfigLogging.IsSetBucket())
144 {
145 xmlWriter.WriteElementString("Bucket", "http://cloudfront.amazonaws.com/doc/2012-05-05/", loggingConfigLogging.Bucket.ToString());
146 }
147 if (loggingConfigLogging.IsSetPrefix())
148 {
149 xmlWriter.WriteElementString("Prefix", "http://cloudfront.amazonaws.com/doc/2012-05-05/", loggingConfigLogging.Prefix.ToString());
150 }
151 xmlWriter.WriteEndElement();
152 }
153 }
154 if (streamingDistributionConfigStreamingDistributionConfig != null)
155 {
156 TrustedSigners trustedSignersTrustedSigners = streamingDistributionConfigStreamingDistributionConfig.TrustedSigners;
157 if (trustedSignersTrustedSigners != null)
158 {
159 xmlWriter.WriteStartElement("TrustedSigners", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
160 if (trustedSignersTrustedSigners.IsSetEnabled())
161 {
162 xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-05-05/", trustedSignersTrustedSigners.Enabled.ToString().ToLower());
163 }
164 if (trustedSignersTrustedSigners.IsSetQuantity())
165 {
166 xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2012-05-05/", trustedSignersTrustedSigners.Quantity.ToString());
167 }
168
169 if (trustedSignersTrustedSigners != null)
170 {
171 List<string> trustedSignersTrustedSignersitemsList = trustedSignersTrustedSigners.Items;
172 if (trustedSignersTrustedSignersitemsList != null && trustedSignersTrustedSignersitemsList.Count > 0)
173 {
174 int trustedSignersTrustedSignersitemsListIndex = 1;
175 xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
176 foreach (string trustedSignersTrustedSignersitemsListValue in trustedSignersTrustedSignersitemsList)
177 {
178 xmlWriter.WriteStartElement("AwsAccountNumber", "http://cloudfront.amazonaws.com/doc/2012-05-05/");
179 xmlWriter.WriteValue(trustedSignersTrustedSignersitemsListValue);
180 xmlWriter.WriteEndElement();
181
182
183 trustedSignersTrustedSignersitemsListIndex++;
184 }
185 xmlWriter.WriteEndElement();
186 }
187 }
188 xmlWriter.WriteEndElement();
189 }
190 }
191 if (streamingDistributionConfigStreamingDistributionConfig.IsSetEnabled())
192 {
193 xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-05-05/", streamingDistributionConfigStreamingDistributionConfig.Enabled.ToString().ToLower());
194 }
195 xmlWriter.WriteEndElement();
196 }
197 }
198
199
200 try
201 {
202 request.Content = System.Text.Encoding.UTF8.GetBytes(stringWriter.ToString());
203 request.Headers.Add("Content-Type", "application/xml");
204 }
205 catch (EncoderFallbackException e)
206 {
207 throw new AmazonServiceException("Unable to marshall request to XML", e);
208 }
209
210
211 return request;
212 }
213 }
214}
215