public override Stream Serialize()

in sdk/Transform/SetBucketLifecycleRequestSerializer.cs [19:140]


        public override Stream Serialize(SetBucketLifecycleRequest request)
        {
            var rules = request.LifecycleRules;
            var lcc = new LifecycleConfiguration
            {
                LifecycleRules = new Model.LifecycleRule[rules.Count]
            };
            
            for (var i = 0; i < rules.Count; i++)
            {
                lcc.LifecycleRules[i] = new Model.LifecycleRule
                {
                    ID = rules[i].ID, 
                    Prefix = rules[i].Prefix
                };

                switch (rules[i].Status)
                {
                    case RuleStatus.Enabled:
                        lcc.LifecycleRules[i].Status = RuleStatus.Enabled.ToString();
                        break;
                    case RuleStatus.Disabled:
                        lcc.LifecycleRules[i].Status = RuleStatus.Disabled.ToString();
                        break;
                }

                if (rules[i].HasExpriation())
                {
                    lcc.LifecycleRules[i].Expiration = new Expiration();
                    if (rules[i].CreatedBeforeDate.HasValue)
                        lcc.LifecycleRules[i].Expiration.CreatedBeforeDate = DateUtils.FormatIso8601Date(rules[i].CreatedBeforeDate.Value);
                    else if (rules[i].ExpriationDays.HasValue)
                        lcc.LifecycleRules[i].Expiration.Days = rules[i].ExpriationDays.Value;
                    else if (rules[i].ExpirationTime.HasValue)
                        lcc.LifecycleRules[i].Expiration.Date = DateUtils.FormatIso8601Date(rules[i].ExpirationTime.Value);
                    else if (rules[i].ExpiredObjectDeleteMarker.HasValue)
                        lcc.LifecycleRules[i].Expiration.ExpiredObjectDeleteMarker = rules[i].ExpiredObjectDeleteMarker;
                }


                if (rules[i].Transitions != null)
                {
                    lcc.LifecycleRules[i].Transition = new LifecycleRuleTransition[rules[i].Transitions.Length];
                    for (int j = 0; j < lcc.LifecycleRules[i].Transition.Length; j++)
                    {
                        lcc.LifecycleRules[i].Transition[j] = ConvertTransition(rules[i].Transitions[j]);
                    }
                }

                if (rules[i].AbortMultipartUpload != null)
                {
                    lcc.LifecycleRules[i].AbortMultipartUpload = ConvertExpiration(rules[i].AbortMultipartUpload);
                }

                if (rules[i].Tags != null)
                {
                    lcc.LifecycleRules[i].Tags = new LifecycleRuleTag[rules[i].Tags.Length];
                    for (int j = 0; j < lcc.LifecycleRules[i].Tags.Length; j++)
                    {
                        lcc.LifecycleRules[i].Tags[j] = new LifecycleRuleTag
                        {
                            Key = rules[i].Tags[j].Key,
                            Value = rules[i].Tags[j].Value,
                        };
                    }
                }

                if (rules[i].NoncurrentVersionExpiration != null)
                {
                    lcc.LifecycleRules[i].NoncurrentVersionExpiration = new LifecycleRuleNoncurrentVersionExpiration()
                    {
                        NoncurrentDays = rules[i].NoncurrentVersionExpiration.NoncurrentDays
                    };
                }

                if (rules[i].NoncurrentVersionTransitions != null)
                {
                    lcc.LifecycleRules[i].NoncurrentVersionTransition = 
                        new LifecycleRuleNoncurrentVersionTransition[rules[i].NoncurrentVersionTransitions.Length];
                    for (int j = 0; j < lcc.LifecycleRules[i].NoncurrentVersionTransition.Length; j++)
                    {
                        lcc.LifecycleRules[i].NoncurrentVersionTransition[j] =
                            new LifecycleRuleNoncurrentVersionTransition()
                            {
                                NoncurrentDays = rules[i].NoncurrentVersionTransitions[j].NoncurrentDays,
                                StorageClass = rules[i].NoncurrentVersionTransitions[j].StorageClass,
                                IsAccessTime = rules[i].NoncurrentVersionTransitions[j].IsAccessTime,
                                ReturnToStdWhenVisit = rules[i].NoncurrentVersionTransitions[j].ReturnToStdWhenVisit,
                                AllowSmallFile = rules[i].NoncurrentVersionTransitions[j].AllowSmallFile
                            };
                    }
                }

                if (rules[i].Filter != null)
                {
                    lcc.LifecycleRules[i].Filter = new LifecycleRuleFilter()
                    {
                        ObjectSizeGreaterThan = rules[i].Filter.ObjectSizeGreaterThan,
                        ObjectSizeLessThan = rules[i].Filter.ObjectSizeLessThan
                    };

                    if (rules[i].Filter.Not != null)
                    {
                        lcc.LifecycleRules[i].Filter.Not = new LifecycleNot()
                        {
                            Prefix = rules[i].Filter.Not.Prefix
                        };

                        if (rules[i].Filter.Not.Tag != null)
                        {
                            lcc.LifecycleRules[i].Filter.Not.Tag = new LifecycleRuleTag()
                            {
                                Key = rules[i].Filter.Not.Tag.Key,
                                Value = rules[i].Filter.Not.Tag.Value,
                            };
                        }
                    }
                }
            }

            return ContentSerializer.Serialize(lcc);
        }