internal override async Task ExecuteAsync()
{
FileStream input = File.OpenRead(filePath);
string checksum = TreeHashGenerator.CalculateTreeHash(input);
try
{
UploadArchiveRequest uploadRequest = new UploadArchiveRequest()
{
AccountId = this.options.AccountId,
ArchiveDescription = archiveDescription,
VaultName = vaultName,
Checksum = checksum,
Body = input
};
uploadRequest.StreamTransferProgress += this.ProgressCallback;
((Amazon.Runtime.Internal.IAmazonWebServiceRequest)uploadRequest).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("SingleUpload").UserAgentRequestEventHandlerSync);
UploadArchiveResponse uploadArchivResponse =
await this.manager.GlacierClient.UploadArchiveAsync(uploadRequest).ConfigureAwait(false);
string archiveId = uploadArchivResponse.ArchiveId;
this.UploadResult = new UploadResult(archiveId, checksum);
}
finally
{
try { input.Dispose(); }
catch (Exception) { }
}
}
}