protected override string AcquireMstx()
        {
            var tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            var sourceUrl  = $"{_cdnUrl}/{TemplatesPackageFileName}";
            var fileTarget = Path.Combine(tempFolder, TemplatesPackageFileName);

            Fs.EnsureFolder(tempFolder);

            DownloadContent(sourceUrl, fileTarget);

            return(fileTarget);
        }
        public override async Task LoadConfigAsync(CancellationToken ct)
        {
            var tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            var sourceUrl  = $"{_cdnUrl}/config.json";
            var fileTarget = Path.Combine(tempFolder, "config.json");

            Fs.EnsureFolder(tempFolder);

            await DownloadContentAsync(sourceUrl, fileTarget, ct);

            Config = TemplatesSourceConfig.LoadFromFile(fileTarget);

            Fs.SafeDeleteDirectory(tempFolder);
        }
        public override void LoadConfig()
        {
            var tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            var sourceUrl  = $"{_cdnUrl}/config.json";
            var fileTarget = Path.Combine(tempFolder, "config.json");

            Fs.EnsureFolder(tempFolder);

            DownloadContent(sourceUrl, fileTarget);

            Config = TemplatesSourceConfig.LoadFromFile(fileTarget);

            Fs.SafeDeleteDirectory(tempFolder);
        }
        public override void Acquire(ref TemplatesPackageInfo packageInfo)
        {
            if (string.IsNullOrEmpty(packageInfo.LocalPath) || !File.Exists(packageInfo.LocalPath))
            {
                var tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
                var sourceUrl  = $"{_cdnUrl}/{packageInfo.Name}";
                var fileTarget = Path.Combine(tempFolder, packageInfo.Name);
                Fs.EnsureFolder(tempFolder);

                DownloadContent(sourceUrl, fileTarget);

                packageInfo.LocalPath = fileTarget;
            }
        }
        public override async Task AcquireAsync(TemplatesPackageInfo packageInfo, CancellationToken ct)
        {
            if (string.IsNullOrEmpty(packageInfo.LocalPath) || !File.Exists(packageInfo.LocalPath))
            {
                _version = packageInfo.Version;

                var tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
                var sourceUrl  = $"{_cdnUrl}/{packageInfo.Name}";
                var fileTarget = Path.Combine(tempFolder, packageInfo.Name);
                Fs.EnsureFolder(tempFolder);

                await DownloadContentAsync(sourceUrl, fileTarget, ct);

                packageInfo.LocalPath = fileTarget;
            }
        }