ListPartsCommand.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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.Common.Communication;
  10. using Aliyun.OSS.Util;
  11. using Aliyun.OSS.Transform;
  12. using Aliyun.OSS.Properties;
  13. namespace Aliyun.OSS.Commands
  14. {
  15. internal class ListPartsCommand : OssCommand<PartListing>
  16. {
  17. private readonly ListPartsRequest _listPartsRequest;
  18. protected override HttpMethod Method
  19. {
  20. get { return HttpMethod.Get; }
  21. }
  22. protected override string Bucket
  23. {
  24. get { return _listPartsRequest.BucketName; }
  25. }
  26. protected override string Key
  27. {
  28. get { return _listPartsRequest.Key; }
  29. }
  30. protected override IDictionary<string, string> Parameters
  31. {
  32. get
  33. {
  34. var parameters = base.Parameters;
  35. Populate(_listPartsRequest, parameters);
  36. return parameters;
  37. }
  38. }
  39. private static void Populate(ListPartsRequest listPartsRequst, IDictionary<string, string> parameters)
  40. {
  41. parameters[RequestParameters.UPLOAD_ID] = listPartsRequst.UploadId;
  42. if (listPartsRequst.MaxParts != null)
  43. parameters[RequestParameters.MAX_PARTS] = listPartsRequst.MaxParts.ToString();
  44. if (listPartsRequst.PartNumberMarker != null)
  45. parameters[RequestParameters.PART_NUMBER_MARKER] = listPartsRequst.PartNumberMarker.ToString();
  46. if (listPartsRequst.EncodingType != null)
  47. parameters[RequestParameters.ENCODING_TYPE] = listPartsRequst.EncodingType;
  48. }
  49. private ListPartsCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
  50. IDeserializer<ServiceResponse, PartListing> deserializeMethod,
  51. ListPartsRequest listPartsRequest)
  52. : base(client, endpoint, context, deserializeMethod)
  53. {
  54. OssUtils.CheckBucketName(listPartsRequest.BucketName);
  55. OssUtils.CheckObjectKey(listPartsRequest.Key);
  56. if (string.IsNullOrEmpty(listPartsRequest.UploadId))
  57. throw new ArgumentException(Resources.ExceptionIfArgumentStringIsNullOrEmpty, "uploadId");
  58. _listPartsRequest = listPartsRequest;
  59. }
  60. public static ListPartsCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context,
  61. ListPartsRequest listPartsRequest)
  62. {
  63. return new ListPartsCommand(client, endpoint, context,
  64. DeserializerFactory.GetFactory().CreateListPartsResultDeserializer(),
  65. listPartsRequest);
  66. }
  67. }
  68. }