Whitelog.Core.File.FileStreamProvider.GetStream C# (CSharp) Method

GetStream() public method

public GetStream ( ) : Stream
return Stream
        public Stream GetStream()
        {
            var filePath = GetFileName(m_configuration);
            if (System.IO.File.Exists(filePath))
            {
                if (m_configuration.AppendToEnd)
                {
                    if (m_configuration.ArchiveEvery.HasValue)
                    {
                        var originalCreationDate = System.IO.File.GetCreationTime(filePath);
                        if ((m_configuration.ArchiveEvery.Value == ArchiveOptions.Hour && originalCreationDate.AddHours(1) > DateTime.Now) ||
                            (m_configuration.ArchiveEvery.Value == ArchiveOptions.Day && originalCreationDate.AddDays(1) > DateTime.Now) ||
                            (m_configuration.ArchiveEvery.Value == ArchiveOptions.Week && originalCreationDate.AddDays(7) > DateTime.Now) ||
                            (m_configuration.ArchiveEvery.Value == ArchiveOptions.Month && originalCreationDate.AddMonths(1) > DateTime.Now))
                        {
                            return new OverrideStreamFlush(CreateFile(filePath));
                        }
                    }
                    else
                    {
                        return new OverrideStreamFlush(CreateFile(filePath));
                    }
                }

                if (!m_configuration.Archive)
                {
                    throw new Exception(string.Format("The file '{0}' already exist and not configured to be archived", filePath));
                }

                ArchiveFile(m_configuration, filePath);
                return new OverrideStreamFlush(CreateFile(filePath));
            }
            else
            {
                return new OverrideStreamFlush(CreateFile(filePath));
            }
        }