Example #1
0
        private string GetArchive()
        {
            string result = null;

            if (CurrentDirectory > -1 && CurrentDirectory < Directories.Count && CurrentMonth > -1 && Months != null && CurrentMonth < Months.Count)
            {
                string dir      = Path.GetFileName(Directories[CurrentDirectory]);
                string fileName = Path.GetFileName(Months[CurrentMonth]);
                if (dir != null && fileName != null)
                {
                    string monthString = dir + "-" + fileName.Substring(5, 2);
                    if (DateTime.TryParseExact(monthString, "yyyy-MM", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out DateTime parsed) && CurrentChatFilter.DuringMonth(parsed))
                    {
                        var archive = ChatManager.OpenArchive(Months[CurrentMonth], ZipArchiveMode.Read);
                        if (archive != null)
                        {
                            Entries = archive.Entries.Where(entry =>
                            {
                                bool found = false;
                                if (entry.Name != ChatManager.INDEX)
                                {
                                    string dayString = monthString + "-" + entry.Name;
                                    if (DateTime.TryParseExact(dayString, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out DateTime day) && CurrentChatFilter.DuringDay(day))
                                    {
                                        found = true;
                                    }
                                }

                                return(found);
                            }).OrderByDescending(entry => entry.Name).Select(entry => entry.Name).ToList();

                            CurrentEntry = -1;
                            result       = Months[CurrentMonth];
                            archive.Dispose();
                        }
                    }
                }

                if (result == null)
                {
                    CurrentMonth++;
                    return(GetArchive());
                }
            }

            return(result);
        }
Example #2
0
        private StringReader GetNextReader()
        {
            StringReader result = null;

            CurrentEntry++;
            if (CurrentEntry < Entries.Count)
            {
                var archive = ChatManager.OpenArchive(Months[CurrentMonth], ZipArchiveMode.Read);
                if (archive != null)
                {
                    var reader = new StreamReader(archive.GetEntry(Entries[CurrentEntry]).Open());
                    result = new StringReader(reader.ReadToEnd());
                    reader.Close();
                    archive.Dispose();
                }
            }

            return(result);
        }