public CloudFrontOperations()
 {
     client = new AmazonCloudFrontClient(credentials, Amazon.RegionEndpoint.USWest1);
     S3Origin origin = new S3Origin {
     }
     client.CreateDistribution(new CreateDistributionRequest {
         DistributionConfig = new DistributionConfig {
             Origins = new Origins {
             }
         }
     })
 }
Ejemplo n.º 2
0
        public IRequest Marshall(UpdateStreamingDistributionRequest updateStreamingDistributionRequest)
        {
            IRequest request = new DefaultRequest(updateStreamingDistributionRequest, "AmazonCloudFront");



            request.HttpMethod = "PUT";
            if (updateStreamingDistributionRequest.IfMatch != null)
            {
                request.Headers.Add("If-Match", updateStreamingDistributionRequest.IfMatch);
            }



            string uriResourcePath = "2012-07-01/streaming-distribution/{Id}/config";

            uriResourcePath = uriResourcePath.Replace("{Id}", updateStreamingDistributionRequest.Id ?? "");

            if (uriResourcePath.Contains("?"))
            {
                string queryString = uriResourcePath.Substring(uriResourcePath.IndexOf("?") + 1);
                uriResourcePath = uriResourcePath.Substring(0, uriResourcePath.IndexOf("?"));

                foreach (string s in queryString.Split('&', ';'))
                {
                    string[] nameValuePair = s.Split('=');
                    if (nameValuePair.Length == 2 && nameValuePair[1].Length > 0)
                    {
                        request.Parameters.Add(nameValuePair[0], nameValuePair[1]);
                    }
                    else
                    {
                        request.Parameters.Add(nameValuePair[0], null);
                    }
                }
            }

            request.ResourcePath = uriResourcePath;


            StringWriter  stringWriter = new StringWriter();
            XmlTextWriter xmlWriter    = new XmlTextWriter(stringWriter);

            xmlWriter.Namespaces = true;

            if (updateStreamingDistributionRequest != null)
            {
                StreamingDistributionConfig streamingDistributionConfigStreamingDistributionConfig = updateStreamingDistributionRequest.StreamingDistributionConfig;
                if (streamingDistributionConfigStreamingDistributionConfig != null)
                {
                    xmlWriter.WriteStartElement("StreamingDistributionConfig", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                    if (streamingDistributionConfigStreamingDistributionConfig.IsSetCallerReference())
                    {
                        xmlWriter.WriteElementString("CallerReference", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingDistributionConfigStreamingDistributionConfig.CallerReference.ToString());
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        S3Origin s3OriginS3Origin = streamingDistributionConfigStreamingDistributionConfig.S3Origin;
                        if (s3OriginS3Origin != null)
                        {
                            xmlWriter.WriteStartElement("S3Origin", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                            if (s3OriginS3Origin.IsSetDomainName())
                            {
                                xmlWriter.WriteElementString("DomainName", "http://cloudfront.amazonaws.com/doc/2012-07-01/", s3OriginS3Origin.DomainName.ToString());
                            }
                            if (s3OriginS3Origin.IsSetOriginAccessIdentity())
                            {
                                xmlWriter.WriteElementString("OriginAccessIdentity", "http://cloudfront.amazonaws.com/doc/2012-07-01/", s3OriginS3Origin.OriginAccessIdentity.ToString());
                            }
                            xmlWriter.WriteEndElement();
                        }
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        Aliases aliasesAliases = streamingDistributionConfigStreamingDistributionConfig.Aliases;
                        if (aliasesAliases != null)
                        {
                            xmlWriter.WriteStartElement("Aliases", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                            if (aliasesAliases.IsSetQuantity())
                            {
                                xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2012-07-01/", aliasesAliases.Quantity.ToString());
                            }

                            if (aliasesAliases != null)
                            {
                                List <string> aliasesAliasesitemsList = aliasesAliases.Items;
                                if (aliasesAliasesitemsList != null && aliasesAliasesitemsList.Count > 0)
                                {
                                    int aliasesAliasesitemsListIndex = 1;
                                    xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                                    foreach (string aliasesAliasesitemsListValue in aliasesAliasesitemsList)
                                    {
                                        xmlWriter.WriteStartElement("CNAME", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                                        xmlWriter.WriteValue(aliasesAliasesitemsListValue);
                                        xmlWriter.WriteEndElement();


                                        aliasesAliasesitemsListIndex++;
                                    }
                                    xmlWriter.WriteEndElement();
                                }
                            }
                            xmlWriter.WriteEndElement();
                        }
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig.IsSetComment())
                    {
                        xmlWriter.WriteElementString("Comment", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingDistributionConfigStreamingDistributionConfig.Comment.ToString());
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        StreamingLoggingConfig streamingLoggingConfigLogging = streamingDistributionConfigStreamingDistributionConfig.Logging;
                        if (streamingLoggingConfigLogging != null)
                        {
                            xmlWriter.WriteStartElement("Logging", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                            if (streamingLoggingConfigLogging.IsSetEnabled())
                            {
                                xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingLoggingConfigLogging.Enabled.ToString().ToLower());
                            }
                            if (streamingLoggingConfigLogging.IsSetBucket())
                            {
                                xmlWriter.WriteElementString("Bucket", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingLoggingConfigLogging.Bucket.ToString());
                            }
                            if (streamingLoggingConfigLogging.IsSetPrefix())
                            {
                                xmlWriter.WriteElementString("Prefix", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingLoggingConfigLogging.Prefix.ToString());
                            }
                            xmlWriter.WriteEndElement();
                        }
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        TrustedSigners trustedSignersTrustedSigners = streamingDistributionConfigStreamingDistributionConfig.TrustedSigners;
                        if (trustedSignersTrustedSigners != null)
                        {
                            xmlWriter.WriteStartElement("TrustedSigners", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                            if (trustedSignersTrustedSigners.IsSetEnabled())
                            {
                                xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-07-01/", trustedSignersTrustedSigners.Enabled.ToString().ToLower());
                            }
                            if (trustedSignersTrustedSigners.IsSetQuantity())
                            {
                                xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2012-07-01/", trustedSignersTrustedSigners.Quantity.ToString());
                            }

                            if (trustedSignersTrustedSigners != null)
                            {
                                List <string> trustedSignersTrustedSignersitemsList = trustedSignersTrustedSigners.Items;
                                if (trustedSignersTrustedSignersitemsList != null && trustedSignersTrustedSignersitemsList.Count > 0)
                                {
                                    int trustedSignersTrustedSignersitemsListIndex = 1;
                                    xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                                    foreach (string trustedSignersTrustedSignersitemsListValue in trustedSignersTrustedSignersitemsList)
                                    {
                                        xmlWriter.WriteStartElement("AwsAccountNumber", "http://cloudfront.amazonaws.com/doc/2012-07-01/");
                                        xmlWriter.WriteValue(trustedSignersTrustedSignersitemsListValue);
                                        xmlWriter.WriteEndElement();


                                        trustedSignersTrustedSignersitemsListIndex++;
                                    }
                                    xmlWriter.WriteEndElement();
                                }
                            }
                            xmlWriter.WriteEndElement();
                        }
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig.IsSetPriceClass())
                    {
                        xmlWriter.WriteElementString("PriceClass", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingDistributionConfigStreamingDistributionConfig.PriceClass.ToString());
                    }
                    if (streamingDistributionConfigStreamingDistributionConfig.IsSetEnabled())
                    {
                        xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2012-07-01/", streamingDistributionConfigStreamingDistributionConfig.Enabled.ToString().ToLower());
                    }
                    xmlWriter.WriteEndElement();
                }
            }


            try
            {
                request.Content = System.Text.Encoding.UTF8.GetBytes(stringWriter.ToString());
                request.Headers.Add("Content-Type", "application/xml");
            }
            catch (EncoderFallbackException e)
            {
                throw new AmazonServiceException("Unable to marshall request to XML", e);
            }


            return(request);
        }
Ejemplo n.º 3
0
        internal AuthlambdaStack(Construct scope, string id, AuthlambdaStackProps props = null) : base(scope, id, props)
        {
            functionsStack = props.functionsStack;

            Bucket websiteBucket = new Bucket(this, "websiteBucket", new BucketProps()
            {
                BlockPublicAccess = BlockPublicAccess.BLOCK_ALL,
                PublicReadAccess  = false,
                //WebsiteIndexDocument = "index.html",
                RemovalPolicy = RemovalPolicy.DESTROY,
                Cors          = new ICorsRule[] {
                    new CorsRule()
                    {
                        AllowedHeaders = new string[] { "Authorization", "Content-Type", "Origin" },
                        AllowedMethods = new HttpMethods[] { HttpMethods.GET, HttpMethods.HEAD },
                        AllowedOrigins = new string[] { "*" }
                    }
                }
            });

            Bucket privateBucket = new Bucket(this, "privateBucket", new BucketProps()
            {
                BlockPublicAccess = BlockPublicAccess.BLOCK_ALL,
                PublicReadAccess  = false,
                RemovalPolicy     = RemovalPolicy.DESTROY,
                Cors = new ICorsRule[] {
                    new CorsRule()
                    {
                        AllowedHeaders = new string[] { "Authorization", "Content-Type", "Origin" },
                        AllowedMethods = new HttpMethods[] { HttpMethods.GET, HttpMethods.HEAD },
                        AllowedOrigins = new string[] { "*" }
                    }
                }
            });

            // The S3 bucket deployment for the website
            var websiteDeployment = new BucketDeployment(this, "TestStaticWebsiteDeployment", new BucketDeploymentProps()
            {
                Sources           = new [] { Source.Asset("./src/website") },
                DestinationBucket = websiteBucket,
                RetainOnDelete    = false
            });

            var privateDeployment = new BucketDeployment(this, "TestPrivateDeployment", new BucketDeploymentProps()
            {
                Sources           = new [] { Source.Asset("./src/private") },
                DestinationBucket = privateBucket,
                RetainOnDelete    = false
            });

            var cloudfrontOAI = OriginAccessIdentity.FromOriginAccessIdentityName(this, "CloudfrontOAIName", cloudfrontOAIName);

            websiteBucket.GrantRead(cloudfrontOAI.GrantPrincipal);
            privateBucket.GrantRead(cloudfrontOAI.GrantPrincipal);

            var cachePolicy = new CachePolicy(this, "TestCachePolicy", new CachePolicyProps()
            {
                CachePolicyName = "TestCachePolicy",
                Comment         = "Cache policy for Testing",
                DefaultTtl      = Duration.Seconds(0),
                CookieBehavior  = CacheCookieBehavior.All(),
                HeaderBehavior  = CacheHeaderBehavior.AllowList(
                    "Authorization",
                    "Content-Type",
                    "Origin"
                    ),
                QueryStringBehavior        = CacheQueryStringBehavior.All(),
                EnableAcceptEncodingBrotli = false,
                EnableAcceptEncodingGzip   = false
            });

            var websiteOrigin = new S3Origin(websiteBucket, new S3OriginProps()
            {
                OriginAccessIdentity = cloudfrontOAI
            });
            var privateOrigin = new S3Origin(privateBucket, new S3OriginProps()
            {
                OriginAccessIdentity = cloudfrontOAI
            });

            var dummyOrigin = new HttpOrigin("example.com", new HttpOriginProps()
            {
                ProtocolPolicy = OriginProtocolPolicy.HTTPS_ONLY
            });

            // default behavior is for the privateOrigin
            var defaultPrivateBehavior = new BehaviorOptions {
                AllowedMethods       = AllowedMethods.ALLOW_ALL,
                CachePolicy          = cachePolicy,
                OriginRequestPolicy  = OriginRequestPolicy.CORS_S3_ORIGIN,
                ViewerProtocolPolicy = ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
                Origin      = privateOrigin,
                EdgeLambdas = new IEdgeLambda[] {
                    new EdgeLambda()
                    {
                        EventType       = LambdaEdgeEventType.VIEWER_REQUEST,
                        FunctionVersion = functionsStack.checkAuthHandler.CurrentVersion,
                    },
                    new EdgeLambda()
                    {
                        EventType       = LambdaEdgeEventType.ORIGIN_RESPONSE,
                        FunctionVersion = functionsStack.httpHeadersHandler.CurrentVersion
                    }
                }
            };

            // this behavior is for dummy origin
            var parseAuthBehavior = new BehaviorOptions {
                AllowedMethods       = AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
                CachePolicy          = cachePolicy,
                OriginRequestPolicy  = OriginRequestPolicy.CORS_S3_ORIGIN,
                ViewerProtocolPolicy = ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
                Origin      = dummyOrigin,
                EdgeLambdas = new IEdgeLambda[] {
                    new EdgeLambda()
                    {
                        EventType       = LambdaEdgeEventType.VIEWER_REQUEST,
                        FunctionVersion = functionsStack.parseAuthHandler.CurrentVersion,
                    }
                }
            };

            var refreshAuthBehavior = new BehaviorOptions {
                AllowedMethods       = AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
                CachePolicy          = cachePolicy,
                OriginRequestPolicy  = OriginRequestPolicy.CORS_S3_ORIGIN,
                ViewerProtocolPolicy = ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
                Origin      = dummyOrigin,
                EdgeLambdas = new IEdgeLambda[] {
                    new EdgeLambda()
                    {
                        EventType       = LambdaEdgeEventType.VIEWER_REQUEST,
                        FunctionVersion = functionsStack.refreshAuthHandler.CurrentVersion,
                    }
                }
            };

            var signOutBehavior = new BehaviorOptions {
                AllowedMethods       = AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
                CachePolicy          = cachePolicy,
                OriginRequestPolicy  = OriginRequestPolicy.CORS_S3_ORIGIN,
                ViewerProtocolPolicy = ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
                Origin      = dummyOrigin,
                EdgeLambdas = new IEdgeLambda[] {
                    new EdgeLambda()
                    {
                        EventType       = LambdaEdgeEventType.VIEWER_REQUEST,
                        FunctionVersion = functionsStack.signOutHandler.CurrentVersion,
                    }
                }
            };

            Distribution distribution = new Distribution(this, "TestCloudfrontDistribution", new DistributionProps()
            {
                Comment           = "Test Website Distribution",
                DefaultRootObject = "index.html",
                PriceClass        = PriceClass.PRICE_CLASS_ALL,
                GeoRestriction    = GeoRestriction.Whitelist(new [] {
                    "IN"
                }),
                DefaultBehavior = defaultPrivateBehavior,
            });

            distribution.AddBehavior("/parseauth", dummyOrigin, parseAuthBehavior);
            distribution.AddBehavior("/refreshauth", dummyOrigin, refreshAuthBehavior);
            distribution.AddBehavior("/signout", dummyOrigin, signOutBehavior);

            var domainNameOutput = new CfnOutput(this, "TestWebsiteDistributionDomainName", new CfnOutputProps()
            {
                Value = distribution.DistributionDomainName
            });
        }
Ejemplo n.º 4
0
        public IRequest Marshall(UpdateStreamingDistributionRequest updateStreamingDistributionRequest)
        {
            IRequest request = new DefaultRequest(updateStreamingDistributionRequest, "AmazonCloudFront");



            request.HttpMethod = "PUT";
            if (updateStreamingDistributionRequest.IsSetIfMatch())
            {
                request.Headers.Add("If-Match", updateStreamingDistributionRequest.IfMatch);
            }

            string uriResourcePath = "2014-01-31/streaming-distribution/{Id}/config";

            uriResourcePath      = uriResourcePath.Replace("{Id}", updateStreamingDistributionRequest.IsSetId() ? updateStreamingDistributionRequest.Id.ToString() : "");
            request.ResourcePath = uriResourcePath;


            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings()
            {
                Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true
            }))
            {
                if (updateStreamingDistributionRequest != null)
                {
                    StreamingDistributionConfig streamingDistributionConfigStreamingDistributionConfig = updateStreamingDistributionRequest.StreamingDistributionConfig;
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        xmlWriter.WriteStartElement("StreamingDistributionConfig", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetCallerReference())
                        {
                            xmlWriter.WriteElementString("CallerReference", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingDistributionConfigStreamingDistributionConfig.CallerReference.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            S3Origin s3OriginS3Origin = streamingDistributionConfigStreamingDistributionConfig.S3Origin;
                            if (s3OriginS3Origin != null)
                            {
                                xmlWriter.WriteStartElement("S3Origin", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                if (s3OriginS3Origin.IsSetDomainName())
                                {
                                    xmlWriter.WriteElementString("DomainName", "http://cloudfront.amazonaws.com/doc/2014-01-31/", s3OriginS3Origin.DomainName.ToString(CultureInfo.InvariantCulture));
                                }
                                if (s3OriginS3Origin.IsSetOriginAccessIdentity())
                                {
                                    xmlWriter.WriteElementString("OriginAccessIdentity", "http://cloudfront.amazonaws.com/doc/2014-01-31/", s3OriginS3Origin.OriginAccessIdentity.ToString(CultureInfo.InvariantCulture));
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            Aliases aliasesAliases = streamingDistributionConfigStreamingDistributionConfig.Aliases;
                            if (aliasesAliases != null)
                            {
                                xmlWriter.WriteStartElement("Aliases", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                if (aliasesAliases.IsSetQuantity())
                                {
                                    xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2014-01-31/", aliasesAliases.Quantity.ToString(CultureInfo.InvariantCulture));
                                }

                                if (aliasesAliases != null)
                                {
                                    List <string> aliasesAliasesitemsList = aliasesAliases.Items;
                                    if (aliasesAliasesitemsList != null && aliasesAliasesitemsList.Count > 0)
                                    {
                                        int aliasesAliasesitemsListIndex = 1;
                                        xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                        foreach (string aliasesAliasesitemsListValue in aliasesAliasesitemsList)
                                        {
                                            xmlWriter.WriteStartElement("CNAME", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                            xmlWriter.WriteValue(aliasesAliasesitemsListValue);
                                            xmlWriter.WriteEndElement();


                                            aliasesAliasesitemsListIndex++;
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetComment())
                        {
                            xmlWriter.WriteElementString("Comment", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingDistributionConfigStreamingDistributionConfig.Comment.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            StreamingLoggingConfig streamingLoggingConfigLogging = streamingDistributionConfigStreamingDistributionConfig.Logging;
                            if (streamingLoggingConfigLogging != null)
                            {
                                xmlWriter.WriteStartElement("Logging", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                if (streamingLoggingConfigLogging.IsSetEnabled())
                                {
                                    xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingLoggingConfigLogging.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                                }
                                if (streamingLoggingConfigLogging.IsSetBucket())
                                {
                                    xmlWriter.WriteElementString("Bucket", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingLoggingConfigLogging.Bucket.ToString(CultureInfo.InvariantCulture));
                                }
                                if (streamingLoggingConfigLogging.IsSetPrefix())
                                {
                                    xmlWriter.WriteElementString("Prefix", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingLoggingConfigLogging.Prefix.ToString(CultureInfo.InvariantCulture));
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            TrustedSigners trustedSignersTrustedSigners = streamingDistributionConfigStreamingDistributionConfig.TrustedSigners;
                            if (trustedSignersTrustedSigners != null)
                            {
                                xmlWriter.WriteStartElement("TrustedSigners", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                if (trustedSignersTrustedSigners.IsSetEnabled())
                                {
                                    xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2014-01-31/", trustedSignersTrustedSigners.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                                }
                                if (trustedSignersTrustedSigners.IsSetQuantity())
                                {
                                    xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2014-01-31/", trustedSignersTrustedSigners.Quantity.ToString(CultureInfo.InvariantCulture));
                                }

                                if (trustedSignersTrustedSigners != null)
                                {
                                    List <string> trustedSignersTrustedSignersitemsList = trustedSignersTrustedSigners.Items;
                                    if (trustedSignersTrustedSignersitemsList != null && trustedSignersTrustedSignersitemsList.Count > 0)
                                    {
                                        int trustedSignersTrustedSignersitemsListIndex = 1;
                                        xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                        foreach (string trustedSignersTrustedSignersitemsListValue in trustedSignersTrustedSignersitemsList)
                                        {
                                            xmlWriter.WriteStartElement("AwsAccountNumber", "http://cloudfront.amazonaws.com/doc/2014-01-31/");
                                            xmlWriter.WriteValue(trustedSignersTrustedSignersitemsListValue);
                                            xmlWriter.WriteEndElement();


                                            trustedSignersTrustedSignersitemsListIndex++;
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetPriceClass())
                        {
                            xmlWriter.WriteElementString("PriceClass", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingDistributionConfigStreamingDistributionConfig.PriceClass.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetEnabled())
                        {
                            xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2014-01-31/", streamingDistributionConfigStreamingDistributionConfig.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                        }
                        xmlWriter.WriteEndElement();
                    }
                }
            }
            try
            {
                string content = stringWriter.ToString();
                request.Content = System.Text.Encoding.UTF8.GetBytes(content);
                request.Headers["Content-Type"] = "application/xml";
            }
            catch (EncoderFallbackException e)
            {
                throw new AmazonServiceException("Unable to marshall request to XML", e);
            }


            return(request);
        }
Ejemplo n.º 5
0
        public IRequest Marshall(CreateStreamingDistributionRequest createStreamingDistributionRequest)
        {
            IRequest request = new DefaultRequest(createStreamingDistributionRequest, "AmazonCloudFront");



            request.HttpMethod = "POST";
            string uriResourcePath = "2013-11-11/streaming-distribution";

            if (uriResourcePath.Contains("?"))
            {
                int    queryIndex  = uriResourcePath.IndexOf("?", StringComparison.OrdinalIgnoreCase);
                string queryString = uriResourcePath.Substring(queryIndex + 1);

                uriResourcePath = uriResourcePath.Substring(0, queryIndex);


                foreach (string s in queryString.Split('&', ';'))
                {
                    string[] nameValuePair = s.Split('=');
                    if (nameValuePair.Length == 2 && nameValuePair[1].Length > 0)
                    {
                        request.Parameters.Add(nameValuePair[0], nameValuePair[1]);
                    }
                    else
                    {
                        request.Parameters.Add(nameValuePair[0], null);
                    }
                }
            }

            request.ResourcePath = uriResourcePath;


            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings()
            {
                Encoding = System.Text.Encoding.UTF8, OmitXmlDeclaration = true
            }))
            {
                if (createStreamingDistributionRequest != null)
                {
                    StreamingDistributionConfig streamingDistributionConfigStreamingDistributionConfig = createStreamingDistributionRequest.StreamingDistributionConfig;
                    if (streamingDistributionConfigStreamingDistributionConfig != null)
                    {
                        xmlWriter.WriteStartElement("StreamingDistributionConfig", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetCallerReference())
                        {
                            xmlWriter.WriteElementString("CallerReference", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingDistributionConfigStreamingDistributionConfig.CallerReference.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            S3Origin s3OriginS3Origin = streamingDistributionConfigStreamingDistributionConfig.S3Origin;
                            if (s3OriginS3Origin != null)
                            {
                                xmlWriter.WriteStartElement("S3Origin", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                if (s3OriginS3Origin.IsSetDomainName())
                                {
                                    xmlWriter.WriteElementString("DomainName", "http://cloudfront.amazonaws.com/doc/2013-11-11/", s3OriginS3Origin.DomainName.ToString(CultureInfo.InvariantCulture));
                                }
                                if (s3OriginS3Origin.IsSetOriginAccessIdentity())
                                {
                                    xmlWriter.WriteElementString("OriginAccessIdentity", "http://cloudfront.amazonaws.com/doc/2013-11-11/", s3OriginS3Origin.OriginAccessIdentity.ToString(CultureInfo.InvariantCulture));
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            Aliases aliasesAliases = streamingDistributionConfigStreamingDistributionConfig.Aliases;
                            if (aliasesAliases != null)
                            {
                                xmlWriter.WriteStartElement("Aliases", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                if (aliasesAliases.IsSetQuantity())
                                {
                                    xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2013-11-11/", aliasesAliases.Quantity.ToString(CultureInfo.InvariantCulture));
                                }

                                if (aliasesAliases != null)
                                {
                                    List <string> aliasesAliasesitemsList = aliasesAliases.Items;
                                    if (aliasesAliasesitemsList != null && aliasesAliasesitemsList.Count > 0)
                                    {
                                        int aliasesAliasesitemsListIndex = 1;
                                        xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                        foreach (string aliasesAliasesitemsListValue in aliasesAliasesitemsList)
                                        {
                                            xmlWriter.WriteStartElement("CNAME", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                            xmlWriter.WriteValue(aliasesAliasesitemsListValue);
                                            xmlWriter.WriteEndElement();


                                            aliasesAliasesitemsListIndex++;
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetComment())
                        {
                            xmlWriter.WriteElementString("Comment", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingDistributionConfigStreamingDistributionConfig.Comment.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            StreamingLoggingConfig streamingLoggingConfigLogging = streamingDistributionConfigStreamingDistributionConfig.Logging;
                            if (streamingLoggingConfigLogging != null)
                            {
                                xmlWriter.WriteStartElement("Logging", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                if (streamingLoggingConfigLogging.IsSetEnabled())
                                {
                                    xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingLoggingConfigLogging.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                                }
                                if (streamingLoggingConfigLogging.IsSetBucket())
                                {
                                    xmlWriter.WriteElementString("Bucket", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingLoggingConfigLogging.Bucket.ToString(CultureInfo.InvariantCulture));
                                }
                                if (streamingLoggingConfigLogging.IsSetPrefix())
                                {
                                    xmlWriter.WriteElementString("Prefix", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingLoggingConfigLogging.Prefix.ToString(CultureInfo.InvariantCulture));
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig != null)
                        {
                            TrustedSigners trustedSignersTrustedSigners = streamingDistributionConfigStreamingDistributionConfig.TrustedSigners;
                            if (trustedSignersTrustedSigners != null)
                            {
                                xmlWriter.WriteStartElement("TrustedSigners", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                if (trustedSignersTrustedSigners.IsSetEnabled())
                                {
                                    xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2013-11-11/", trustedSignersTrustedSigners.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                                }
                                if (trustedSignersTrustedSigners.IsSetQuantity())
                                {
                                    xmlWriter.WriteElementString("Quantity", "http://cloudfront.amazonaws.com/doc/2013-11-11/", trustedSignersTrustedSigners.Quantity.ToString(CultureInfo.InvariantCulture));
                                }

                                if (trustedSignersTrustedSigners != null)
                                {
                                    List <string> trustedSignersTrustedSignersitemsList = trustedSignersTrustedSigners.Items;
                                    if (trustedSignersTrustedSignersitemsList != null && trustedSignersTrustedSignersitemsList.Count > 0)
                                    {
                                        int trustedSignersTrustedSignersitemsListIndex = 1;
                                        xmlWriter.WriteStartElement("Items", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                        foreach (string trustedSignersTrustedSignersitemsListValue in trustedSignersTrustedSignersitemsList)
                                        {
                                            xmlWriter.WriteStartElement("AwsAccountNumber", "http://cloudfront.amazonaws.com/doc/2013-11-11/");
                                            xmlWriter.WriteValue(trustedSignersTrustedSignersitemsListValue);
                                            xmlWriter.WriteEndElement();


                                            trustedSignersTrustedSignersitemsListIndex++;
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetPriceClass())
                        {
                            xmlWriter.WriteElementString("PriceClass", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingDistributionConfigStreamingDistributionConfig.PriceClass.ToString(CultureInfo.InvariantCulture));
                        }
                        if (streamingDistributionConfigStreamingDistributionConfig.IsSetEnabled())
                        {
                            xmlWriter.WriteElementString("Enabled", "http://cloudfront.amazonaws.com/doc/2013-11-11/", streamingDistributionConfigStreamingDistributionConfig.Enabled.ToString(CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture));
                        }
                        xmlWriter.WriteEndElement();
                    }
                }
            }
            try
            {
                string content = stringWriter.ToString();
                request.Content = System.Text.Encoding.UTF8.GetBytes(content);
                request.Headers["Content-Type"] = "application/xml";
            }
            catch (EncoderFallbackException e)
            {
                throw new AmazonServiceException("Unable to marshall request to XML", e);
            }


            return(request);
        }