Пример #1
0
        /// <summary>
        /// Filename format: {azureCdnPlatformPrefix}_{azureCdnAccountNumber}_{yyyyMMdd}_{nnnn}.log.gz
        /// See https://my.edgecast.com/uploads/ubers/1/docs/en-US/webhelp/w/CDNHelpCenter/Content/Raw_Log_Files/Raw_Log_File_Naming_Convention.htm
        /// </summary>
        private void TryParseFileName()
        {
            FileName = Uri.LocalPath.Split(new[] { Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();

            var fileNameParts = FileName.Split(new[] { _underscore }, StringSplitOptions.RemoveEmptyEntries);

            if (fileNameParts.Count() == 4)
            {
                AzureCdnPlatform      = AzureCdnPlatformExtensions.ParseAzureCdnPlatformPrefix(fileNameParts[0]);
                AzureCdnAccountNumber = fileNameParts[1];
                GeneratedDate         = TryParseGeneratedDate(fileNameParts[2]);

                // split last part to extract rolling file number and file extensions
                var lastPart = fileNameParts[3].Split(new[] { _dot }, StringSplitOptions.RemoveEmptyEntries);
                if (lastPart.Count() == 3)
                {
                    RollingFileNumber = TryParseRollingFileNumber(lastPart[0]);
                    Extension         = _dot + string.Join(_dot, lastPart[1], lastPart[2]);

                    if (Extension.EndsWith(FileExtensions.Gzip, StringComparison.InvariantCultureIgnoreCase))
                    {
                        ContentType = _contentTypeGzip;
                    }
                    else
                    {
                        throw new InvalidRawLogFileNameException(FileName);
                    }
                }
                else if (lastPart.Count() == 4)
                {
                    // found an already renamed file?
                    RollingFileNumber = TryParseRollingFileNumber(lastPart[0]);
                    Extension         = _dot + string.Join(_dot, lastPart[1], lastPart[2], lastPart[3]);
                    if (Extension.EndsWith(FileExtensions.Download, StringComparison.InvariantCultureIgnoreCase))
                    {
                        IsPendingDownload = true;
                        ContentType       = _contentTypeGzip;
                    }
                }
                else
                {
                    throw new InvalidRawLogFileNameException(FileName);
                }
            }
            else
            {
                throw new InvalidRawLogFileNameException(FileName);
            }
        }
Пример #2
0
 public void GetRawLogFilePrefixThrowsForInvalidAzureCdnPlatform()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => AzureCdnPlatformExtensions.GetRawLogFilePrefix((AzureCdnPlatform)4));
 }
Пример #3
0
        internal void CanGetRawLogFilePrefixForValidAzureCdnPlatforms(AzureCdnPlatform platform, string prefix)
        {
            var actual = AzureCdnPlatformExtensions.GetRawLogFilePrefix(platform);

            Assert.Equal(prefix, actual);
        }
Пример #4
0
 public void ParseThrowsForInvalidAzureCdnPlatformPrefix()
 {
     Assert.Throws <UnknownAzureCdnPlatformException>(() => AzureCdnPlatformExtensions.ParseAzureCdnPlatformPrefix("bla"));
 }
Пример #5
0
        internal void CanParseValidAzureCdnPlatformStrings(string prefix, AzureCdnPlatform platform)
        {
            var actual = AzureCdnPlatformExtensions.ParseAzureCdnPlatformPrefix(prefix);

            Assert.Equal(platform, actual);
        }