public async Task<UploadResult> UploadAsync(string vaultName, string archiveDescription, string filepath, UploadOptions options)
{
FileInfo fi = new FileInfo(filepath);
BaseUploadCommand command;
if (fi.Length > MULTIPART_UPLOAD_SIZE_THRESHOLD)
command = new MultipartUploadCommand(this, vaultName, archiveDescription, filepath, options);
else
command = new SinglepartUploadCommand(this, vaultName, archiveDescription, filepath, options);
await command.ExecuteAsync().ConfigureAwait(false);
return command.UploadResult;
}