TransferValidationOptionsExtensions
using System;
namespace Azure.Storage
{
    internal static class TransferValidationOptionsExtensions
    {
        public static StorageChecksumAlgorithm ResolveAuto(this StorageChecksumAlgorithm checksumAlgorithm)
        {
            if (checksumAlgorithm == StorageChecksumAlgorithm.Auto)
                return StorageChecksumAlgorithm.StorageCrc64;
            return checksumAlgorithm;
        }
        public static UploadTransferValidationOptions ToValidationOptions(this byte[] md5)
        {
            if (md5 != null)
                return new UploadTransferValidationOptions {
                    ChecksumAlgorithm = StorageChecksumAlgorithm.MD5,
                    PrecalculatedChecksum = (ReadOnlyMemory<byte>)md5
                };
            return null;
        }
        public static DownloadTransferValidationOptions ToValidationOptions(this bool requestTransactionalMD5)
        {
            if (!requestTransactionalMD5)
                return null;
            return new DownloadTransferValidationOptions {
                ChecksumAlgorithm = StorageChecksumAlgorithm.MD5,
                AutoValidateChecksum = false
            };
        }
        public static void CopyTo(this TransferValidationOptions source, TransferValidationOptions dest)
        {
            source.Upload.CopyTo(dest.Upload);
            source.Download.CopyTo(dest.Download);
        }
        public static void CopyTo(this UploadTransferValidationOptions source, UploadTransferValidationOptions dest)
        {
            dest.ChecksumAlgorithm = source.ChecksumAlgorithm;
            dest.PrecalculatedChecksum = source.PrecalculatedChecksum;
        }
        public static void CopyTo(this DownloadTransferValidationOptions source, DownloadTransferValidationOptions dest)
        {
            dest.ChecksumAlgorithm = source.ChecksumAlgorithm;
            dest.AutoValidateChecksum = source.AutoValidateChecksum;
        }
    }
}