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."); } }
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); }
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 {