sdk/Commands/CompleteMultipartUploadCommand.cs (98 lines of code) (raw):

/* * Copyright (C) Alibaba Cloud Computing * All rights reserved. * */ using System; using System.IO; using System.Collections.Generic; using Aliyun.OSS.Transform; using Aliyun.OSS.Common.Communication; using Aliyun.OSS.Common.Handlers; using Aliyun.OSS.Util; using Aliyun.OSS.Properties; namespace Aliyun.OSS.Commands { internal class CompleteMultipartUploadCommand : OssCommand<CompleteMultipartUploadResult> { private readonly CompleteMultipartUploadRequest _completeMultipartUploadRequest; protected override string Bucket { get { return _completeMultipartUploadRequest.BucketName; } } protected override string Key { get { return _completeMultipartUploadRequest.Key; } } protected override HttpMethod Method { get { return HttpMethod.Post; } } protected override IDictionary<string, string> Headers { get { var headers = base.Headers; if (_completeMultipartUploadRequest.Metadata != null) { _completeMultipartUploadRequest.Metadata.Populate(headers); } if (_completeMultipartUploadRequest.RequestPayer == RequestPayer.Requester) { headers.Add(OssHeaders.OssRequestPayer, RequestPayer.Requester.ToString().ToLowerInvariant()); } return headers; } } protected override IDictionary<string, string> Parameters { get { var parameters = base.Parameters; parameters[RequestParameters.UPLOAD_ID] = _completeMultipartUploadRequest.UploadId; return parameters; } } protected override Stream Content { get { return SerializerFactory.GetFactory().CreateCompleteUploadRequestSerializer() .Serialize(_completeMultipartUploadRequest); } } protected override bool LeaveResponseOpen { get { return _completeMultipartUploadRequest.IsNeedResponseStream(); } } private CompleteMultipartUploadCommand(IServiceClient client, Uri endpoint, ExecutionContext context, IDeserializer<ServiceResponse, CompleteMultipartUploadResult> deserializeMethod, CompleteMultipartUploadRequest completeMultipartUploadRequest) : base(client, endpoint, context, deserializeMethod) { _completeMultipartUploadRequest = completeMultipartUploadRequest; } public static CompleteMultipartUploadCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context, CompleteMultipartUploadRequest completeMultipartUploadRequest) { OssUtils.CheckBucketName(completeMultipartUploadRequest.BucketName); OssUtils.CheckObjectKey(completeMultipartUploadRequest.Key); if (string.IsNullOrEmpty(completeMultipartUploadRequest.UploadId)) throw new ArgumentException(Resources.ExceptionIfArgumentStringIsNullOrEmpty, "uploadId"); // handle upload callback error 203 if (completeMultipartUploadRequest.IsCallbackRequest()) { context.ResponseHandlers.Add(new CallbackResponseHandler()); } var conf = OssUtils.GetClientConfiguration(client); if (conf.EnableCrcCheck) { context.ResponseHandlers.Add(new CompleteMultipartUploadCrc64Handler(completeMultipartUploadRequest)); } return new CompleteMultipartUploadCommand(client, endpoint, context, DeserializerFactory.GetFactory().CreateCompleteUploadResultDeserializer(completeMultipartUploadRequest), completeMultipartUploadRequest); } } }