Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public static PlatformDimension FromPackageStatistic(PackageStatistics packageStatistics)
        {
            if (string.IsNullOrEmpty(packageStatistics.UserAgent))
            {
                return(Unknown);
            }

            var dimension = Parse(packageStatistics.UserAgent);

            return(dimension);
        }
Ejemplo n.º 4
0
        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);
        }