public PackageStatistics FromCdnLogEntry(CdnLogEntry cdnLogEntry) { var packageDefinition = PackageDefinition.FromRequestUrl(cdnLogEntry.RequestUrl); if (packageDefinition == null) { return(null); } if (_packageTranslator != null) { packageDefinition = _packageTranslator.TranslatePackageDefinition(packageDefinition); } var statistic = new PackageStatistics(); statistic.EdgeServerTimeDelivered = cdnLogEntry.EdgeServerTimeDelivered; statistic.PackageId = packageDefinition.PackageId; statistic.PackageVersion = NormalizeSemanticVersion(packageDefinition.PackageVersion); var customFieldDictionary = CdnLogCustomFieldParser.Parse(cdnLogEntry.CustomField); statistic.Operation = GetCustomFieldValue(customFieldDictionary, NuGetCustomHeaders.NuGetOperation); statistic.DependentPackage = GetCustomFieldValue(customFieldDictionary, NuGetCustomHeaders.NuGetDependentPackage); statistic.ProjectGuids = GetCustomFieldValue(customFieldDictionary, NuGetCustomHeaders.NuGetProjectGuids); statistic.UserAgent = GetUserAgentValue(cdnLogEntry); statistic.EdgeServerIpAddress = cdnLogEntry.EdgeServerIpAddress; // ignore blacklisted user agents if (!IsBlackListed(statistic.UserAgent)) { return(statistic); } return(null); }
public static ClientDimension FromPackageStatistic(PackageStatistics packageStatistics) { if (string.IsNullOrEmpty(packageStatistics.UserAgent)) { return(Unknown); } ClientDimension result; var parsed = _parser.ParseUserAgent(packageStatistics.UserAgent); if (parsed != null) { if (string.Equals(_other, parsed.Family, StringComparison.OrdinalIgnoreCase)) { return(Unknown); } result = new ClientDimension(); result.ClientName = parsed.Family; result.Major = string.IsNullOrWhiteSpace(parsed.Major) ? _zeroString : parsed.Major; result.Minor = string.IsNullOrWhiteSpace(parsed.Minor) ? _zeroString : parsed.Minor; result.Patch = string.IsNullOrWhiteSpace(parsed.Patch) ? _zeroString : parsed.Patch; } else { result = Unknown; } return(result); }
public static PlatformDimension FromPackageStatistic(PackageStatistics packageStatistics) { if (string.IsNullOrEmpty(packageStatistics.UserAgent)) { return(Unknown); } var dimension = Parse(packageStatistics.UserAgent); return(dimension); }
public PackageStatistics FromCdnLogEntry(CdnLogEntry cdnLogEntry) { var packageDefinitions = PackageDefinition.FromRequestUrl(cdnLogEntry.RequestUrl); if (packageDefinitions == null || !packageDefinitions.Any()) { return(null); } if (packageDefinitions.Count > 1) { _logger.LogWarning(LogEvents.MultiplePackageIDVersionParseOptions, "Found multiple parse options for URL {RequestUrl}: {PackageDefinitions}", cdnLogEntry.RequestUrl, string.Join(", ", packageDefinitions)); } var packageDefinition = packageDefinitions.First(); if (_packageTranslator != null) { bool translateOccured = _packageTranslator.TryTranslatePackageDefinition(packageDefinition); if (translateOccured) { _logger.LogInformation(LogEvents.TranslatedPackageIdVersion, "Translated package. Url: {RequestUrl}, New definition: {PackageDefinition}", cdnLogEntry.RequestUrl, packageDefinition); } } var statistic = new PackageStatistics(); statistic.EdgeServerTimeDelivered = cdnLogEntry.EdgeServerTimeDelivered; statistic.PackageId = packageDefinition.PackageId; statistic.PackageVersion = NormalizeSemanticVersion(packageDefinition.PackageVersion); var customFieldDictionary = CdnLogCustomFieldParser.Parse(cdnLogEntry.CustomField); statistic.Operation = GetCustomFieldValue(customFieldDictionary, NuGetCustomHeaders.NuGetOperation); statistic.DependentPackage = GetCustomFieldValue(customFieldDictionary, NuGetCustomHeaders.NuGetDependentPackage); statistic.UserAgent = GetUserAgentValue(cdnLogEntry); statistic.EdgeServerIpAddress = cdnLogEntry.EdgeServerIpAddress; // Ignore blacklisted user agents if (!IsBlackListed(statistic.UserAgent)) { return(statistic); } return(null); }