ListObjectsCommand.cs 2.7 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 System.Globalization;
  10. using Aliyun.OSS.Common.Communication;
  11. using Aliyun.OSS.Util;
  12. using Aliyun.OSS.Transform;
  13. namespace Aliyun.OSS.Commands
  14. {
  15. internal class ListObjectsCommand : OssCommand<ObjectListing>
  16. {
  17. private readonly ListObjectsRequest _listObjectsRequest;
  18. protected override string Bucket
  19. {
  20. get { return _listObjectsRequest.BucketName; }
  21. }
  22. protected override IDictionary<string, string> Parameters
  23. {
  24. get
  25. {
  26. var parameters = base.Parameters;
  27. Populate(_listObjectsRequest, parameters);
  28. return parameters;
  29. }
  30. }
  31. private ListObjectsCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
  32. IDeserializer<ServiceResponse, ObjectListing> deserializer,
  33. ListObjectsRequest listObjectsRequest)
  34. : base(client, endpoint, context, deserializer)
  35. {
  36. _listObjectsRequest = listObjectsRequest;
  37. }
  38. public static ListObjectsCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context,
  39. ListObjectsRequest listObjectsRequest)
  40. {
  41. return new ListObjectsCommand(client, endpoint, context,
  42. DeserializerFactory.GetFactory().CreateListObjectsResultDeserializer(),
  43. listObjectsRequest);
  44. }
  45. private static void Populate(ListObjectsRequest listObjectsRequest, IDictionary<string, string> parameters)
  46. {
  47. if (listObjectsRequest.Prefix != null)
  48. {
  49. parameters[RequestParameters.PREFIX] = listObjectsRequest.Prefix;
  50. }
  51. if (listObjectsRequest.Marker != null)
  52. {
  53. parameters[RequestParameters.MARKER] = listObjectsRequest.Marker;
  54. }
  55. if (listObjectsRequest.Delimiter != null)
  56. {
  57. parameters[RequestParameters.DELIMITER] = listObjectsRequest.Delimiter;
  58. }
  59. if (listObjectsRequest.MaxKeys.HasValue)
  60. {
  61. parameters[RequestParameters.MAX_KEYS] =
  62. listObjectsRequest.MaxKeys.Value.ToString(CultureInfo.InvariantCulture);
  63. }
  64. if (listObjectsRequest.EncodingType != null)
  65. {
  66. parameters[RequestParameters.ENCODING_TYPE] = listObjectsRequest.EncodingType;
  67. }
  68. }
  69. }
  70. }