Exemplo n.º 1
0
        private Task <CatalogLeaf> ProcessLeafAsync(CatalogLeafItem leafItem, CancellationToken token)
        {
            switch (leafItem.Type)
            {
            case CatalogLeafType.PackageDelete:
                return(_client.GetPackageDeleteLeafAsync(leafItem.Url, token));

            case CatalogLeafType.PackageDetails:
                return(_client.GetPackageDetailsLeafAsync(leafItem.Url, token));

            default:
                throw new NotSupportedException($"The catalog leaf type '{leafItem.Type}' is not supported.");
            }
        }
Exemplo n.º 2
0
        private async Task <bool> ProcessLeafAsync(CatalogLeafItem leafItem)
        {
            bool success;

            try
            {
                switch (leafItem.Type)
                {
                case CatalogLeafType.PackageDelete:
                    var packageDelete = await _client.GetPackageDeleteLeafAsync(leafItem.Url);

                    success = await _leafProcessor.ProcessPackageDeleteAsync(packageDelete);

                    break;

                case CatalogLeafType.PackageDetails:
                    var packageDetails = await _client.GetPackageDetailsLeafAsync(leafItem.Url);

                    success = await _leafProcessor.ProcessPackageDetailsAsync(packageDetails);

                    break;

                default:
                    throw new NotSupportedException($"The catalog leaf type '{leafItem.Type}' is not supported.");
                }
            }
            catch (Exception exception)
            {
                _logger.LogError(
                    0,
                    exception,
                    "An exception was thrown while processing leaf {leafUrl}.",
                    leafItem.Url);
                success = false;
            }

            if (!success)
            {
                _logger.LogWarning(
                    "Failed to process leaf {leafUrl} ({packageId} {packageVersion}, {leafType}).",
                    leafItem.Url,
                    leafItem.PackageId,
                    leafItem.PackageVersion,
                    leafItem.Type);
            }

            return(success);
        }
Exemplo n.º 3
0
        public void JsonSerializationException()
        {
            var leafItem = new CatalogLeafItem
            {
                Url             = "https://api.nuget.org/v3/registration3-gz-semver2/newtonsoft.json/12.0.1.json",
                Type            = CatalogLeafType.PackageDetails,
                CommitId        = "47065e84-b83a-434f-9619-1b2f17df91b9",
                CommitTimestamp = DateTimeOffset.Parse("2019-10-10T00:00:00.00+00:00"),
                PackageId       = "Newtonsoft.Json",
                PackageVersion  = "12.0.1"
            };

            var result = JsonConvert.SerializeObject(leafItem);

            Assert.Equal(TestData.CatalogLeafItem, result);
        }
 private Task <CatalogLeaf> ProcessLeafAsync(CatalogLeafItem leafItem, CancellationToken token) =>
 leafItem.Type switch
 {