PageRenderTime 56ms CodeModel.GetById 37ms app.highlight 17ms RepoModel.GetById 0ms app.codeStats 0ms

/Amazon.CloudFront/Model/Internal/MarshallTransformations/UpdateStreamingDistributionRequestMarshaller.cs

https://bitbucket.org/mdavid/aws-sdk-for-net
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