SetBucketLifecycleRequest.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (C) Alibaba Cloud Computing
  3. * All rights reserved.
  4. *
  5. * 版权所有 (C)阿里云计算有限公司
  6. */
  7. using System;
  8. using System.Collections.Generic;
  9. using Aliyun.OSS.Util;
  10. namespace Aliyun.OSS
  11. {
  12. /// <summary>
  13. /// 设置存储空间生命周期的请求
  14. /// </summary>
  15. public class SetBucketLifecycleRequest
  16. {
  17. private IList<LifecycleRule> _lifecycleRules = new List<LifecycleRule>();
  18. /// <summary>
  19. /// 获取<see cref="OssObject" />所在<see cref="Bucket" />的名称。
  20. /// </summary>
  21. public string BucketName { get; private set; }
  22. /// <summary>
  23. /// Lifecycle规则列表,每个bucket最多允许1000条规则。
  24. /// </summary>
  25. public IList<LifecycleRule> LifecycleRules
  26. {
  27. get { return ((List<LifecycleRule>)_lifecycleRules).AsReadOnly(); }
  28. set
  29. {
  30. if (value == null)
  31. throw new ArgumentException("LifecycleRule list should not be null.");
  32. if (value.Count > OssUtils.LifecycleRuleLimit)
  33. throw new ArgumentException("One bucket not allow exceed one thousand items of LifecycleRules.");
  34. _lifecycleRules = value;
  35. }
  36. }
  37. /// <summary>
  38. /// 构造一个新的<see cref="SetBucketLifecycleRequest" />实例。
  39. /// </summary>
  40. /// <param name="bucketName"><see cref="OssObject" />所在<see cref="Bucket" />的名称</param>
  41. public SetBucketLifecycleRequest(string bucketName)
  42. {
  43. BucketName = bucketName;
  44. }
  45. /// <summary>
  46. /// 添加一条LifecycleRule。
  47. /// </summary>
  48. /// <param name="lifecycleRule"></param>
  49. public void AddLifecycleRule(LifecycleRule lifecycleRule)
  50. {
  51. if (lifecycleRule == null)
  52. throw new ArgumentException("lifecycleRule should not be null or empty.");
  53. if (_lifecycleRules.Count >= OssUtils.LifecycleRuleLimit)
  54. throw new ArgumentException("One bucket not allow exceed one thousand item of LifecycleRules.");
  55. if ((!lifecycleRule.ExpirationTime.HasValue && !lifecycleRule.ExpriationDays.HasValue)
  56. || (lifecycleRule.ExpirationTime.HasValue && lifecycleRule.ExpriationDays.HasValue))
  57. {
  58. throw new ArgumentException("Only one expiration property should be specified.");
  59. }
  60. _lifecycleRules.Add(lifecycleRule);
  61. }
  62. }
  63. }