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));
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        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--;
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public ProjectContextInfo(string projectId, ProjectStyle projectStyle, NuGetProjectKind projectKind)
 {
     ProjectId    = projectId;
     ProjectStyle = projectStyle;
     ProjectKind  = projectKind;
 }