public static IReadOnlyCollection <SearchResultPackage> Deserialize(string json)
        {
            var options = new JsonSerializerOptions
            {
                Converters           = { new AuthorsConverter() },
                AllowTrailingCommas  = true,
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            };

            var deserialized   = JsonSerializer.Deserialize <NugetSearchApiContainerSerializable>(json, options);
            var resultPackages = new List <SearchResultPackage>();

            foreach (var deserializedPackage in deserialized.Data)
            {
                var versions =
                    deserializedPackage.Versions.Select(v => new SearchResultPackageVersion(v.Version, v.Downloads))
                    .ToArray();

                string[] authors = deserializedPackage?.Authors?.Authors ?? Array.Empty <string>();

                var searchResultPackage = new SearchResultPackage(new PackageId(deserializedPackage.Id),
                                                                  deserializedPackage.Version, deserializedPackage.Description, deserializedPackage.Summary,
                                                                  deserializedPackage.Tags, authors, deserializedPackage.TotalDownloads, deserializedPackage.Verified,
                                                                  versions);

                resultPackages.Add(searchResultPackage);
            }

            return(resultPackages);
        }
Пример #2
0
        public SearchResultPrinterTests()
        {
            _reporter            = new BufferedReporter();
            _searchResultPrinter = new SearchResultPrinter(_reporter);

            _filledSearchResultPackage = new SearchResultPackage(
                new PackageId("my.tool"),
                "1.0.0",
                "my tool description",
                "my tool summary",
                new List <string> {
                "tag1", "tag2"
            },
                new List <string> {
                "author1", "author2"
            },
                10,
                true,
                new List <SearchResultPackageVersion> {
                new SearchResultPackageVersion("1.0.0", 10)
            });
            _mostEmptyToCheckNullException = new SearchResultPackage(
                new PackageId("my.tool"),
                "1.0.0",
                null,
                null,
                new List <string>(),
                new List <string> {
                "author1", "author2"
            },
                1244,
                true,
                new List <SearchResultPackageVersion> {
                new SearchResultPackageVersion("1.0.0", 10), new SearchResultPackageVersion("0.9.0", 1234)
            });
        }