/// <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); } }
public void GetRawLogFilePrefixThrowsForInvalidAzureCdnPlatform() { Assert.Throws <ArgumentOutOfRangeException>(() => AzureCdnPlatformExtensions.GetRawLogFilePrefix((AzureCdnPlatform)4)); }
internal void CanGetRawLogFilePrefixForValidAzureCdnPlatforms(AzureCdnPlatform platform, string prefix) { var actual = AzureCdnPlatformExtensions.GetRawLogFilePrefix(platform); Assert.Equal(prefix, actual); }
public void ParseThrowsForInvalidAzureCdnPlatformPrefix() { Assert.Throws <UnknownAzureCdnPlatformException>(() => AzureCdnPlatformExtensions.ParseAzureCdnPlatformPrefix("bla")); }
internal void CanParseValidAzureCdnPlatformStrings(string prefix, AzureCdnPlatform platform) { var actual = AzureCdnPlatformExtensions.ParseAzureCdnPlatformPrefix(prefix); Assert.Equal(platform, actual); }