private async Task ProcessAsset(Octokit.ReleaseAsset releaseAsset, string branch, int updateId) { var operatingSystem = Parser.ParseOS(releaseAsset.Name); if (!operatingSystem.HasValue) { return; } var runtime = Parser.ParseRuntime(releaseAsset.Name); var arch = Parser.ParseArchitecture(releaseAsset.Name); var installer = Parser.ParseInstaller(releaseAsset.Name); // Calculate the hash of the zip file. var releaseZip = Path.Combine(_config.DataDirectory, branch.ToString().ToLower(), releaseAsset.Name); string releaseHash; if (!File.Exists(releaseZip)) { Directory.CreateDirectory(Path.GetDirectoryName(releaseZip)); using var fileStream = File.OpenWrite(releaseZip); using var artifactStream = await _httpClient.GetStreamAsync(releaseAsset.BrowserDownloadUrl); await artifactStream.CopyToAsync(fileStream); } using (var stream = File.OpenRead(releaseZip)) using (var sha = SHA256.Create()) { releaseHash = BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", "").ToLower(); } File.Delete(releaseZip); // Add to database. var updateFile = new UpdateFileEntity { UpdateId = updateId, OperatingSystem = operatingSystem.Value, Architecture = arch, Runtime = runtime, Filename = releaseAsset.Name, Url = releaseAsset.BrowserDownloadUrl, Hash = releaseHash, Installer = installer }; await _updateFileService.Insert(updateFile).ConfigureAwait(false); }
private async Task ProcessFile(AzureFile file, string branch, int updateId) { _logger.LogDebug("Processing {0}", file.Path); // Detect target operating system. var operatingSystem = Parser.ParseOS(file.Path); if (!operatingSystem.HasValue) { return; } _logger.LogDebug("Got os {0}", operatingSystem); // Detect runtime / arch var runtime = Parser.ParseRuntime(file.Path); _logger.LogDebug("Got runtime {0}", runtime); var arch = Parser.ParseArchitecture(file.Path); _logger.LogDebug("Got arch {0}", arch); var installer = Parser.ParseInstaller(file.Path); _logger.LogDebug("Got installer {0}", installer); // Calculate the hash of the zip file. var releaseFileName = Path.GetFileName(file.Path); var releaseZip = Path.Combine(_config.DataDirectory, branch, releaseFileName); string releaseHash; if (!File.Exists(releaseZip)) { Directory.CreateDirectory(Path.GetDirectoryName(releaseZip)); using var fileStream = File.OpenWrite(releaseZip); using var artifactStream = await _httpClient.GetStreamAsync(file.Url).ConfigureAwait(false); await artifactStream.CopyToAsync(fileStream).ConfigureAwait(false); } using (var stream = File.OpenRead(releaseZip)) { using var sha = SHA256.Create(); releaseHash = BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", "").ToLower(); } File.Delete(releaseZip); // Add to database. var updateFile = new UpdateFileEntity { UpdateId = updateId, OperatingSystem = operatingSystem.Value, Architecture = arch, Runtime = runtime, Filename = releaseFileName, Url = file.Url, Hash = releaseHash, Installer = installer }; await _updateFileService.Insert(updateFile).ConfigureAwait(false); }