GeneratePresignedUriRequest.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. /// 指定生成URL预签名的请求参数。
  14. /// </summary>
  15. public class GeneratePresignedUriRequest
  16. {
  17. private SignHttpMethod _method;
  18. private IDictionary<string, string> _userMetadata = new Dictionary<string, string>();
  19. private IDictionary<string, string> _queryParams = new Dictionary<string, string>();
  20. private ResponseHeaderOverrides _responseHeader = new ResponseHeaderOverrides();
  21. /// <summary>
  22. /// 获取或者设置HttpMethod。
  23. /// </summary>
  24. public SignHttpMethod Method
  25. {
  26. get { return _method; }
  27. set
  28. {
  29. if (_method != SignHttpMethod.Get && _method != SignHttpMethod.Put)
  30. throw new ArgumentException("Only supports Get & Put method.");
  31. _method = value;
  32. }
  33. }
  34. /// <summary>
  35. /// 获取或者设置Object所在Bucket的名称。
  36. /// </summary>
  37. public string BucketName { get; set; }
  38. /// <summary>
  39. /// 获取或者设置Object的名称。
  40. /// </summary>
  41. public string Key { get; set; }
  42. /// <summary>
  43. /// 获取或设置签名URL对应的文件类型。
  44. /// </summary>
  45. public string ContentType { get; set; }
  46. /// <summary>
  47. /// 获取或设置签名URL对应的文件MD5。
  48. /// </summary>
  49. public string ContentMd5 { get; set; }
  50. /// <summary>
  51. /// 获取或者设置过期时间。
  52. /// </summary>
  53. public DateTime Expiration { get; set; }
  54. /// <summary>
  55. /// 获取或者设置要重载的返回请求头。
  56. /// </summary>
  57. public ResponseHeaderOverrides ResponseHeaders
  58. {
  59. get { return _responseHeader; }
  60. set
  61. {
  62. if (value == null)
  63. throw new ArgumentException("ResponseHeaderOverrides should not be null");
  64. _responseHeader = value;
  65. }
  66. }
  67. /// <summary>
  68. /// 获取或者设置用户自定义的元数据,表示以x-oss-meta-为前缀的请求头。
  69. /// </summary>
  70. public IDictionary<string, string> UserMetadata
  71. {
  72. get { return _userMetadata; }
  73. set
  74. {
  75. if (value == null)
  76. throw new ArgumentException("UserMetadata should not be null");
  77. _userMetadata = value;
  78. }
  79. }
  80. /// <summary>
  81. /// 获取或者设置用户请求参数。
  82. /// </summary>
  83. public IDictionary<string, string> QueryParams
  84. {
  85. get { return _queryParams; }
  86. set
  87. {
  88. if (value == null)
  89. throw new ArgumentException("QueryParams should not be null");
  90. _queryParams = value;
  91. }
  92. }
  93. /// <summary>
  94. /// 添加用户Meta项
  95. /// </summary>
  96. /// <param name="metaItem">meta的名称</param>
  97. /// <param name="value">metal的值</param>
  98. public void AddUserMetadata(string metaItem, string value)
  99. {
  100. _userMetadata.Add(metaItem, value);
  101. }
  102. /// <summary>
  103. /// 添加用户参数
  104. /// </summary>
  105. /// <param name="param">参数名称</param>
  106. /// <param name="value">参数值</param>
  107. public void AddQueryParam(string param, string value)
  108. {
  109. _queryParams.Add(param, value);
  110. }
  111. /// <summary>
  112. /// 构造一个新的<see cref="GeneratePresignedUriRequest" />实例。
  113. /// </summary>
  114. /// <param name="bucketName"><see cref="OssObject" />所在<see cref="Bucket" />的名称</param>
  115. /// <param name="key"><see cref="OssObject" />的<see cref="P:OssObject.Key" /></param>
  116. public GeneratePresignedUriRequest(string bucketName, string key)
  117. : this(bucketName, key, SignHttpMethod.Get)
  118. {
  119. }
  120. /// <summary>
  121. /// 构造一个新的<see cref="GeneratePresignedUriRequest" />实例。
  122. /// </summary>
  123. /// <param name="bucketName"><see cref="OssObject" />所在<see cref="Bucket" />的名称。</param>
  124. /// <param name="key"><see cref="OssObject" />的<see cref="P:OssObject.Key" /></param>
  125. /// <param name="httpMethod">http传输方式</param>
  126. public GeneratePresignedUriRequest(string bucketName, string key, SignHttpMethod httpMethod)
  127. {
  128. OssUtils.CheckBucketName(bucketName);
  129. OssUtils.CheckObjectKey(key);
  130. BucketName = bucketName;
  131. Key = key;
  132. Method = httpMethod;
  133. // Default expiration(15 minutes from now) for signed url.
  134. Expiration = DateTime.Now.AddMinutes(15);
  135. }
  136. }
  137. }