public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; // create request var request = new Amazon.Glacier.Model.AbortMultipartUploadRequest(); if (cmdletContext.AccountId != null) { request.AccountId = cmdletContext.AccountId; } if (cmdletContext.UploadId != null) { request.UploadId = cmdletContext.UploadId; } if (cmdletContext.VaultName != null) { request.VaultName = cmdletContext.VaultName; } CmdletOutput output; // issue call var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); try { var response = CallAWSServiceOperation(client, request); object pipelineOutput = null; pipelineOutput = cmdletContext.Select(response, this); output = new CmdletOutput { PipelineOutput = pipelineOutput, ServiceResponse = response }; } catch (Exception e) { output = new CmdletOutput { ErrorResponse = e }; } return(output); }
/// <summary> /// Initiates the asynchronous execution of the AbortMultipartUpload operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task<AbortMultipartUploadResponse> AbortMultipartUploadAsync(AbortMultipartUploadRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new AbortMultipartUploadRequestMarshaller(); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.Instance; return InvokeAsync<AbortMultipartUploadRequest,AbortMultipartUploadResponse>(request, marshaller, unmarshaller, cancellationToken); }
internal AbortMultipartUploadResponse AbortMultipartUpload(AbortMultipartUploadRequest request) { var marshaller = new AbortMultipartUploadRequestMarshaller(); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.Instance; return Invoke<AbortMultipartUploadRequest,AbortMultipartUploadResponse>(request, marshaller, unmarshaller); }
private Amazon.Glacier.Model.AbortMultipartUploadResponse CallAWSServiceOperation(IAmazonGlacier client, Amazon.Glacier.Model.AbortMultipartUploadRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Glacier", "AbortMultipartUpload"); try { #if DESKTOP return(client.AbortMultipartUpload(request)); #elif CORECLR return(client.AbortMultipartUploadAsync(request).GetAwaiter().GetResult()); #else #error "Unknown build edition" #endif } catch (AmazonServiceException exc) { var webException = exc.InnerException as System.Net.WebException; if (webException != null) { throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException); } throw; } }
/// <summary> /// Initiates the asynchronous execution of the AbortMultipartUpload operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload operation on AmazonGlacierClient.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> /// /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndAbortMultipartUpload /// operation.</returns> public IAsyncResult BeginAbortMultipartUpload(AbortMultipartUploadRequest request, AsyncCallback callback, object state) { var marshaller = new AbortMultipartUploadRequestMarshaller(); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.Instance; return BeginInvoke<AbortMultipartUploadRequest>(request, marshaller, unmarshaller, callback, state); }
/// <summary> /// <para>This operation aborts a multipart upload identified by the upload ID.</para> <para>After the Abort Multipart Upload request succeeds, /// you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, /// aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart /// upload, see UploadMultipartPart and CompleteMultipartUpload.</para> <para>This operation is idempotent.</para> <para>An AWS account has full /// permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by /// default. You must grant them explicit permission to perform specific actions. For more information, see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/using-iam-with-amazon-glacier.html">Access Control Using AWS Identity and Access /// Management (IAM)</a> .</para> <para> For conceptual information and underlying REST API, go to <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-archives.html">Working with Archives in Amazon Glacier</a> and <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-abort-upload.html">Abort Multipart Upload</a> in the <i>Amazon /// Glacier Developer Guide</i> . /// </para> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload service method on /// AmazonGlacier.</param> /// /// <exception cref="T:Amazon.Glacier.Model.ResourceNotFoundException" /> /// <exception cref="T:Amazon.Glacier.Model.MissingParameterValueException" /> /// <exception cref="T:Amazon.Glacier.Model.ServiceUnavailableException" /> /// <exception cref="T:Amazon.Glacier.Model.InvalidParameterValueException" /> public AbortMultipartUploadResponse AbortMultipartUpload(AbortMultipartUploadRequest request) { var task = AbortMultipartUploadAsync(request); try { return task.Result; } catch(AggregateException e) { ExceptionDispatchInfo.Capture(e.InnerException).Throw(); return null; } }
/// <summary> /// Initiates the asynchronous execution of the AbortMultipartUpload operation. /// <seealso cref="Amazon.Glacier.IAmazonGlacier.AbortMultipartUpload"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task<AbortMultipartUploadResponse> AbortMultipartUploadAsync(AbortMultipartUploadRequest request, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new AbortMultipartUploadRequestMarshaller(); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.GetInstance(); return Invoke<IRequest, AbortMultipartUploadRequest, AbortMultipartUploadResponse>(request, marshaller, unmarshaller, signer, cancellationToken); }
/// <summary> /// Initiates the asynchronous execution of the AbortMultipartUpload operation. /// <seealso cref="Amazon.Glacier.AmazonGlacier.AbortMultipartUpload"/> /// </summary> /// /// <param name="abortMultipartUploadRequest">Container for the necessary parameters to execute the AbortMultipartUpload operation on /// AmazonGlacier.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> public IAsyncResult BeginAbortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest, AsyncCallback callback, object state) { return invokeAbortMultipartUpload(abortMultipartUploadRequest, callback, state, false); }
internal override void Execute() { FileInfo fileInfo = new FileInfo(filePath); FileStream fileStream = File.OpenRead(filePath); string uploadId = null; try { this.currentUploadProgressArgs = new StreamTransferProgressArgs(0, 0, fileInfo.Length); long partSize = CalculatePartSize(fileInfo.Length); InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest { AccountId = this.options.AccountId, ArchiveDescription = archiveDescription, VaultName = vaultName, PartSize = partSize }; initiateRequest.BeforeRequestEvent += new UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync; InitiateMultipartUploadResult initiateResult = this.manager.GlacierClient.InitiateMultipartUpload(initiateRequest).InitiateMultipartUploadResult; uploadId = initiateResult.UploadId; List<string> partTreeHashs = new List<string>(); long currentPosition = 0; while (currentPosition < fileInfo.Length) { long length = partSize; if (currentPosition + partSize > fileInfo.Length) { length = fileInfo.Length - currentPosition; } PartStreamWrapper partStream = new PartStreamWrapper(fileStream, length); string checksum = TreeHashGenerator.CalculateTreeHash(partStream); partTreeHashs.Add(checksum); UploadMultipartPartRequest uploadRequest = new UploadMultipartPartRequest { AccountId=this.options.AccountId, Checksum=checksum, Body=partStream, Range = ("bytes " + currentPosition + "-" + (currentPosition + length - 1) + "/*"), UploadId=uploadId, VaultName=vaultName }; uploadRequest.StreamTransferProgress += this.ProgressCallback; uploadRequest.BeforeRequestEvent += new UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync; this.manager.GlacierClient.UploadMultipartPart(uploadRequest); currentPosition += partSize; } string totalFileChecksum = TreeHashGenerator.CalculateTreeHash(partTreeHashs); string archiveSize = fileInfo.Length.ToString(); CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest { AccountId=this.options.AccountId, ArchiveSize=archiveSize, VaultName=vaultName, Checksum=totalFileChecksum, UploadId=uploadId }; compRequest.BeforeRequestEvent += new UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync; CompleteMultipartUploadResult completeMultipartUploadResult = this.manager.GlacierClient.CompleteMultipartUpload(compRequest).CompleteMultipartUploadResult; string archiveId = completeMultipartUploadResult.ArchiveId; this.UploadResult = new UploadResult(archiveId, totalFileChecksum); } catch (Exception) { // If we got an unrecoverable then abort the upload. if (!string.IsNullOrEmpty(uploadId)) { AbortMultipartUploadRequest abortRequest = new AbortMultipartUploadRequest() { AccountId = this.options.AccountId, VaultName = this.vaultName, UploadId = uploadId }; abortRequest.BeforeRequestEvent += new UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync; this.manager.GlacierClient.AbortMultipartUpload(abortRequest); } throw; } finally { try { fileStream.Close(); } catch (Exception) { } } }
/// <summary> /// <para>This operation aborts a multipart upload identified by the upload ID.</para> <para>After the Abort Multipart Upload request succeeds, /// you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, /// aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart /// upload, see UploadPart and CompleteMultipartUpload.</para> <para>This operation is idempotent.</para> <para>An AWS account has full /// permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by /// default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity /// and Access Management (IAM).</para> <para> For conceptual information and underlying REST API, go to Working with Archives in Amazon Glacier /// and Abort Multipart Upload in the <i>Amazon Glacier Developer Guide</i> . /// </para> /// </summary> /// /// <param name="abortMultipartUploadRequest">Container for the necessary parameters to execute the AbortMultipartUpload service method on /// AmazonGlacier.</param> /// /// <exception cref="ResourceNotFoundException"/> /// <exception cref="MissingParameterValueException"/> /// <exception cref="ServiceUnavailableException"/> /// <exception cref="InvalidParameterValueException"/> public AbortMultipartUploadResponse AbortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest) { IAsyncResult asyncResult = invokeAbortMultipartUpload(abortMultipartUploadRequest, null, null, true); return EndAbortMultipartUpload(asyncResult); }
IAsyncResult invokeAbortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest, AsyncCallback callback, object state, bool synchronized) { IRequest irequest = new AbortMultipartUploadRequestMarshaller().Marshall(abortMultipartUploadRequest); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.GetInstance(); AsyncResult result = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller); Invoke(result); return result; }
/// <summary> /// <para>This operation aborts a multipart upload identified by the upload ID.</para> <para>After the Abort Multipart Upload request succeeds, /// you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, /// aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart /// upload, see UploadMultipartPart and CompleteMultipartUpload.</para> <para>This operation is idempotent.</para> <para>An AWS account has full /// permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by /// default. You must grant them explicit permission to perform specific actions. For more information, see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/using-iam-with-amazon-glacier.html">Access Control Using AWS Identity and Access /// Management (IAM)</a> .</para> <para> For conceptual information and underlying REST API, go to <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-archives.html">Working with Archives in Amazon Glacier</a> and <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-multipart-abort-upload.html">Abort Multipart Upload</a> in the <i>Amazon /// Glacier Developer Guide</i> . /// </para> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload service method on /// AmazonGlacier.</param> /// /// <exception cref="T:Amazon.Glacier.Model.ResourceNotFoundException" /> /// <exception cref="T:Amazon.Glacier.Model.MissingParameterValueException" /> /// <exception cref="T:Amazon.Glacier.Model.ServiceUnavailableException" /> /// <exception cref="T:Amazon.Glacier.Model.InvalidParameterValueException" /> public AbortMultipartUploadResponse AbortMultipartUpload(AbortMultipartUploadRequest request) { var task = AbortMultipartUploadAsync(request); try { return task.Result; } catch(AggregateException e) { throw e.InnerException; } }
/// <summary> /// Initiates the asynchronous execution of the AbortMultipartUpload operation. /// <seealso cref="Amazon.Glacier.IAmazonGlacier.AbortMultipartUpload"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the AbortMultipartUpload operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public async Task<AbortMultipartUploadResponse> AbortMultipartUploadAsync(AbortMultipartUploadRequest request, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new AbortMultipartUploadRequestMarshaller(); var unmarshaller = AbortMultipartUploadResponseUnmarshaller.GetInstance(); var response = await Invoke<IRequest, AbortMultipartUploadRequest, AbortMultipartUploadResponse>(request, marshaller, unmarshaller, signer, cancellationToken) .ConfigureAwait(continueOnCapturedContext: false); return response; }
internal override async Task ExecuteAsync() { FileInfo fileInfo = new FileInfo(filePath); FileStream fileStream = File.OpenRead(filePath); string uploadId = null; try { this.currentUploadProgressArgs = new StreamTransferProgressArgs(0, 0, fileInfo.Length); long partSize = CalculatePartSize(fileInfo.Length); InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest() { AccountId = this.options.AccountId, ArchiveDescription = archiveDescription, VaultName = vaultName, PartSize = partSize }; ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)initiateRequest).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync); InitiateMultipartUploadResponse initiateResponse = await this.manager.GlacierClient.InitiateMultipartUploadAsync(initiateRequest).ConfigureAwait(false); uploadId = initiateResponse.UploadId; List<string> partTreeHashs = new List<string>(); long currentPosition = 0; while (currentPosition < fileInfo.Length) { long length = partSize; if (currentPosition + partSize > fileInfo.Length) { length = fileInfo.Length - currentPosition; } Stream partStream = new PartialWrapperStream(fileStream, length); string checksum = TreeHashGenerator.CalculateTreeHash(partStream); partTreeHashs.Add(checksum); UploadMultipartPartRequest uploadRequest = new UploadMultipartPartRequest() { AccountId = this.options.AccountId, Checksum = checksum, Range = "bytes " + currentPosition + "-" + (currentPosition + length - 1) + "/*", UploadId = uploadId, VaultName = vaultName, Body = partStream }; uploadRequest.StreamTransferProgress += this.ProgressCallback; ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)uploadRequest).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync); await this.manager.GlacierClient.UploadMultipartPartAsync(uploadRequest).ConfigureAwait(false); currentPosition += partSize; } string totalFileChecksum = TreeHashGenerator.CalculateTreeHash(partTreeHashs); string archiveSize = fileInfo.Length.ToString(CultureInfo.InvariantCulture); CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest() { AccountId = this.options.AccountId, ArchiveSize = archiveSize, VaultName = vaultName, Checksum = totalFileChecksum, UploadId = uploadId }; ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)compRequest).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync); CompleteMultipartUploadResponse completeMultipartUploadResponse = await this.manager.GlacierClient.CompleteMultipartUploadAsync(compRequest).ConfigureAwait(false); string archiveId = completeMultipartUploadResponse.ArchiveId; this.UploadResult = new UploadResult(archiveId, totalFileChecksum); } catch (Exception) { // If we got an unrecoverable then abort the upload. if (!string.IsNullOrEmpty(uploadId)) { AbortMultipartUploadRequest abortRequest = new AbortMultipartUploadRequest() { AccountId = this.options.AccountId, VaultName = this.vaultName, UploadId = uploadId }; ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)abortRequest).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("MultiUpload").UserAgentRequestEventHandlerSync); this.manager.GlacierClient.AbortMultipartUploadAsync(abortRequest).Wait(); } throw; } finally { try { fileStream.Dispose(); } catch (Exception) { } } }