protected IEnumerable <NupkgInfo> CreatePackageInfos(IEnumerable <string> packagePaths) { return(packagePaths // Ignore symbol packages. .Where(path => !NupkgInfo.IsSymbolPackagePath(path)) .Select(path => _nupkgInfoFactory.CreateNupkgInfo(path))); }
private bool FeedContainsIdenticalPackage() { if (string.IsNullOrEmpty(PassIfIdenticalV2Feed) || string.IsNullOrEmpty(PackageFile)) { return(false); } var packageInfo = _nupkgInfoFactory.CreateNupkgInfo(PackageFile); string packageUrl = $"{PassIfIdenticalV2Feed}/package/{packageInfo.Id}/{packageInfo.Version}"; byte[] localBytes = File.ReadAllBytes(PackageFile); bool identical = false; try { Log.LogMessage( MessageImportance.High, $"Downloading package from '{packageUrl}' " + $"to check if identical to '{PackageFile}'"); using (var client = new HttpClient(new HttpClientHandler() { CheckCertificateRevocationList = true }) { Timeout = TimeSpan.FromMinutes(10) }) using (var response = client.GetAsync(packageUrl).Result) { byte[] remoteBytes = response.Content.ReadAsByteArrayAsync().Result; identical = localBytes.SequenceEqual(remoteBytes); } } catch (Exception e) { Log.LogWarningFromException(e, true); } if (identical) { Log.LogMessage( MessageImportance.High, $"Package '{PackageFile}' is identical to feed download: ignoring push error."); } else { Log.LogMessage( MessageImportance.High, $"Package '{PackageFile}' is different from feed download."); } return(identical); }
public PackageArtifactModel CreatePackageArtifactModel(ITaskItem item) { _log.LogMessage($"Creating NupkgInfo based on '{item.ItemSpec}'"); NupkgInfo info = _nupkgInfoFactory.CreateNupkgInfo(item.ItemSpec); return(new PackageArtifactModel { Attributes = MSBuildListSplitter.GetNamedProperties(item.GetMetadata("ManifestArtifactData")), Id = info.Id, Version = info.Version }); }