protected override IProjectContextInfo?DeserializeCore(ref MessagePackReader reader, MessagePackSerializerOptions options) { NuGetProjectKind projectKind = NuGetProjectKind.Unknown; ProjectStyle projectStyle = ProjectStyle.Unknown; string? projectId = null; int propertyCount = reader.ReadMapHeader(); for (int propertyIndex = 0; propertyIndex < propertyCount; propertyIndex++) { switch (reader.ReadString()) { case ProjectIdPropertyName: projectId = reader.ReadString(); break; case ProjectKindPropertyName: projectKind = options.Resolver.GetFormatter <NuGetProjectKind>().Deserialize(ref reader, options); break; case ProjectStylePropertyName: projectStyle = options.Resolver.GetFormatter <ProjectStyle>().Deserialize(ref reader, options); break; default: reader.Skip(); break; } } Assumes.NotNull(projectId); return(new ProjectContextInfo(projectId, projectStyle, projectKind)); }
public static ValueTask <IProjectContextInfo> CreateAsync(NuGetProject nugetProject, CancellationToken cancellationToken) { Assumes.NotNull(nugetProject); if (!nugetProject.TryGetMetadata(NuGetProjectMetadataKeys.ProjectId, out string projectId)) { throw new InvalidOperationException(); } NuGetProjectKind projectKind = GetProjectKind(nugetProject); ProjectStyle projectStyle = nugetProject.ProjectStyle; return(new ValueTask <IProjectContextInfo>(new ProjectContextInfo(projectId, projectStyle, projectKind))); }
public IProjectContextInfo?Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) { if (reader.TryReadNil()) { return(null); } // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf options.Security.DepthStep(ref reader); try { NuGetProjectKind projectKind = NuGetProjectKind.Unknown; ProjectStyle projectStyle = ProjectStyle.Unknown; string? projectId = null; int propertyCount = reader.ReadMapHeader(); for (int propertyIndex = 0; propertyIndex < propertyCount; propertyIndex++) { switch (reader.ReadString()) { case ProjectIdPropertyName: projectId = reader.ReadString(); break; case ProjectKindPropertyName: projectKind = options.Resolver.GetFormatter <NuGetProjectKind>().Deserialize(ref reader, options); break; case ProjectStylePropertyName: projectStyle = options.Resolver.GetFormatter <ProjectStyle>().Deserialize(ref reader, options); break; default: reader.Skip(); break; } } Assumes.NotNull(projectId); return(new ProjectContextInfo(projectId, projectStyle, projectKind)); } finally { // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf reader.Depth--; } }
private static NuGetProjectKind GetProjectKind(NuGetProject nugetProject) { // Order matters NuGetProjectKind projectKind = NuGetProjectKind.Unknown; if (nugetProject is BuildIntegratedNuGetProject) { projectKind = NuGetProjectKind.PackageReference; } else if (nugetProject is MSBuildNuGetProject) { projectKind = NuGetProjectKind.PackagesConfig; } return(projectKind); }
public void Options_ShowClassicOptions_WhenProjectKindIsNotProjectConfig_ReturnsFalse(NuGetProjectKind projectKind) { var project = new Mock <IProjectContextInfo>(); project.SetupGet(p => p.ProjectKind) .Returns(projectKind); var model = new PackageDetailControlModel( Mock.Of <IServiceBroker>(), Mock.Of <INuGetSolutionManagerService>(), projects: new[] { project.Object }); Assert.False(model.Options.ShowClassicOptions); }
public ProjectContextInfo(string projectId, ProjectStyle projectStyle, NuGetProjectKind projectKind) { ProjectId = projectId; ProjectStyle = projectStyle; ProjectKind = projectKind; }