/// <summary>
        /// Sends the messages which have not been sent yet. Static overrides are applied.
        /// </summary>
        /// <returns></returns>
        public IEnumerable<DequeueResultItem> SendQueuedMessages()
        {
            var filters = new DequeueFilterList().And(new SentStatusDequeueFilter(false));
            var overrides = new OverrideList();

            return SendQueuedMessages(filters, overrides, true);
        }
Exemple #2
0
        /// <summary>
        /// Sends the messages which have not been sent yet. Static overrides are applied.
        /// </summary>
        /// <returns></returns>
        public IEnumerable <DequeueResultItem> SendQueuedMessages()
        {
            var filters   = new DequeueFilterList().And(new SentStatusDequeueFilter(false));
            var overrides = new OverrideList();

            return(SendQueuedMessages(filters, overrides, true));
        }
Exemple #3
0
        private MailMessage GetMailMessage(EmailQueueItem message, OverrideList overrides)
        {
            var mailMessage = new MailMessage();

            mailMessage.From = Config.FromAddress;
            if (!string.IsNullOrWhiteSpace(message.To))
            {
                mailMessage.To.Add(message.To);
            }
            if (!string.IsNullOrWhiteSpace(message.Cc))
            {
                mailMessage.CC.Add(message.Cc);
            }
            if (!string.IsNullOrWhiteSpace(message.Bcc))
            {
                mailMessage.Bcc.Add(message.Bcc);
            }
            mailMessage.Subject    = message.Subject;
            mailMessage.Body       = message.Body;
            mailMessage.IsBodyHtml = message.IsBodyHtml;

            mailMessage = StaticOverridesesProvider.StaticOverrides.ApplyOverrides(mailMessage);
            mailMessage = overrides.ApplyOverrides(mailMessage);
            return(mailMessage);
        }
        /// <summary>
        /// Sends the messages which match the filters and applies the overrides prior to sending
        /// </summary>
        /// <param name="filters"></param>
        /// <param name="overrides"></param>
        /// <param name="audit">whether to change the sent status and number of tries for an email</param>
        /// <returns></returns>
        public IEnumerable<DequeueResultItem> SendQueuedMessages(DequeueFilterList filters, OverrideList overrides, bool audit = true)
        {
            if(filters == null) throw new ArgumentNullException("filters");
            if(overrides == null) throw new ArgumentNullException("overrides");

            TroutLog.Log.Info(string.Format("Beginning dequeuing with{0} auditing at", audit ? "" : "out"));

            List<DequeueResultItem> results = new List<DequeueResultItem>();
            var messages = filters.Filter(Repository);

            foreach (var message in messages.ToList())
            {
                MailMessage mailMessage = GetMailMessage(message, overrides);

                foreach (var attachment in AttachmentFileSystem.GetAttachments(message))
                {
                    mailMessage.Attachments.Add(attachment);
                } 

                var result = SmtpClient.Send(mailMessage);
                results.Add(new DequeueResultItem(message, result.IsSuccess, result.Message, mailMessage, result.Tries));

                TroutLog.Log.Info(string.Format("{0} was {1}sent with message - {2} after {3} tries.", message.ID, result.IsSuccess ? "" : "not ", result.Message, result.Tries));

                if (audit)
                {
                    if (result.IsSuccess)
                    {
                        message.IsSent = true;
                        message.SendDate = DateTime.Now;
                    }
                    else
                    {
                        message.IsSent = false;
                        message.SendDate = null;
                    }

                    message.NumberTries++;
                    message.LastTryDate = DateTime.Now;
                }
            }

            TroutLog.Log.Info(string.Format("Saving of dequeue results"));
            Repository.SaveChanges();


            return results;
        }
        private OverrideList CreateStaticOverrideList()
        {
            OverrideList list = new OverrideList();

            StaticOverrideConfigurationSectionGroup section = (StaticOverrideConfigurationSectionGroup)ConfigurationManager.GetSection("staticOverrides");

            if (section != null)
            {
                foreach (StaticOverrideConfigurationElement overrideConfig in section.StaticOverrides)
                {
                    MailMessageOverride mmOverride = (MailMessageOverride)Activator.CreateInstance(overrideConfig.StaticOverrideType);

                    if(overrideConfig.DoOverride)
                    {
                        mmOverride.Override(overrideConfig.Override);
                    }

                    if (overrideConfig.DoAppend)
                    {
                        mmOverride.Append(overrideConfig.Append);
                    }

                    if (overrideConfig.DoPrepend)
                    {
                        mmOverride.Prepend(overrideConfig.Prepend);
                    }

                    if (overrideConfig.Clear)
                    {
                        mmOverride.Clear();
                    }

                    list.Add(mmOverride);
                }
            }

            return list;
        }
Exemple #6
0
        private OverrideList CreateStaticOverrideList()
        {
            OverrideList list = new OverrideList();

            StaticOverrideConfigurationSectionGroup section = (StaticOverrideConfigurationSectionGroup)ConfigurationManager.GetSection("staticOverrides");

            if (section != null)
            {
                foreach (StaticOverrideConfigurationElement overrideConfig in section.StaticOverrides)
                {
                    MailMessageOverride mmOverride = (MailMessageOverride)Activator.CreateInstance(overrideConfig.StaticOverrideType);

                    if (overrideConfig.DoOverride)
                    {
                        mmOverride.Override(overrideConfig.Override);
                    }

                    if (overrideConfig.DoAppend)
                    {
                        mmOverride.Append(overrideConfig.Append);
                    }

                    if (overrideConfig.DoPrepend)
                    {
                        mmOverride.Prepend(overrideConfig.Prepend);
                    }

                    if (overrideConfig.Clear)
                    {
                        mmOverride.Clear();
                    }

                    list.Add(mmOverride);
                }
            }

            return(list);
        }
Exemple #7
0
        public void StaticOverridesAreApplied()
        {
            var testingStaticOverrides = new OverrideList();

            testingStaticOverrides.Add(new ToOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new CcOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new BccOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new SubjectOverride().Prepend("SubjectSpecialString"));
            testingStaticOverrides.Add(new BodyOverride().Prepend("BodySpecialString"));

            var staticOverridesProviderMock = new Mock <IStaticOverridesProvider>();

            staticOverridesProviderMock.Setup(m => m.StaticOverrides).Returns(testingStaticOverrides);

            MailMessageQueue    queue    = new MailMessageQueue(Repository, AttachmentFileSystem);
            MailMessageDequeuer dequeuer = new MailMessageDequeuer(Config, SmtpClient, Repository, AttachmentFileSystem, staticOverridesProviderMock.Object);

            var mm = new MailMessage();

            queue.EnqueueMessage(mm);

            var emailQueueItem = Repository.Fetch().First();

            var fl = new DequeueFilterList();

            fl.And(new IdDequeueFilter(emailQueueItem.ID));

            var result = dequeuer.SendQueuedMessages(fl, new OverrideList());

            var sent = result.First().SentMailMessage;

            Assert.AreEqual("*****@*****.**", sent.To.ToString(), "Static To Override was not applied");
            Assert.AreEqual("*****@*****.**", sent.CC.ToString(), "Static Cc Override was not applied");
            Assert.AreEqual("*****@*****.**", sent.Bcc.ToString(), "Static Bcc Override was not applied");
            Assert.AreEqual("SubjectSpecialString", sent.Subject, "Static Subject Override was not applied");
            Assert.AreEqual("BodySpecialString", sent.Body, "Static Body Override was not applied");
        }
 public PropertyGrid()
 {
     Overrides = new OverrideList();
     Initialize();
 }
        public void StaticOverridesAreApplied()
        {
            var testingStaticOverrides = new OverrideList();
            testingStaticOverrides.Add(new ToOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new CcOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new BccOverride().Prepend("*****@*****.**"));
            testingStaticOverrides.Add(new SubjectOverride().Prepend("SubjectSpecialString"));
            testingStaticOverrides.Add(new BodyOverride().Prepend("BodySpecialString"));

            var staticOverridesProviderMock = new Mock<IStaticOverridesProvider>();
            staticOverridesProviderMock.Setup(m => m.StaticOverrides).Returns(testingStaticOverrides);

            MailMessageQueue queue = new MailMessageQueue(Repository, AttachmentFileSystem);
            MailMessageDequeuer dequeuer = new MailMessageDequeuer(Config, SmtpClient, Repository, AttachmentFileSystem, staticOverridesProviderMock.Object);

            var mm = new MailMessage();

            queue.EnqueueMessage(mm);

            var emailQueueItem = Repository.Fetch().First();

            var fl = new DequeueFilterList();
            fl.And(new IdDequeueFilter(emailQueueItem.ID));

            var result = dequeuer.SendQueuedMessages(fl, new OverrideList());

            var sent = result.First().SentMailMessage;

            Assert.AreEqual("*****@*****.**", sent.To.ToString(), "Static To Override was not applied");
            Assert.AreEqual("*****@*****.**", sent.CC.ToString(), "Static Cc Override was not applied");
            Assert.AreEqual("*****@*****.**", sent.Bcc.ToString(), "Static Bcc Override was not applied");
            Assert.AreEqual("SubjectSpecialString", sent.Subject, "Static Subject Override was not applied");
            Assert.AreEqual("BodySpecialString", sent.Body, "Static Body Override was not applied");
        }
        private MailMessage GetMailMessage(EmailQueueItem message, OverrideList overrides)
        {
            var mailMessage = new MailMessage();
            mailMessage.From = Config.FromAddress;
            if (!string.IsNullOrWhiteSpace(message.To)) mailMessage.To.Add(message.To);
            if (!string.IsNullOrWhiteSpace(message.Cc)) mailMessage.CC.Add(message.Cc);
            if (!string.IsNullOrWhiteSpace(message.Bcc)) mailMessage.Bcc.Add(message.Bcc);
            mailMessage.Subject = message.Subject;
            mailMessage.Body = message.Body;
            mailMessage.IsBodyHtml = message.IsBodyHtml;

            mailMessage = StaticOverridesesProvider.StaticOverrides.ApplyOverrides(mailMessage);
            mailMessage = overrides.ApplyOverrides(mailMessage);
            return mailMessage;
        }
        /// <summary>
        /// Returns emails which match the filter with the provided overrides applied.
        /// </summary>
        /// <param name="filters"></param>
        /// <param name="overrides"></param>
        /// <returns></returns>
        public IEnumerable<DequeueListItem> GetQueuedMessages(DequeueFilterList filters, OverrideList overrides)
        {
            if (filters == null) throw new ArgumentNullException("filters");
            if (overrides == null) throw new ArgumentNullException("overrides");

            TroutLog.Log.Info(string.Format("Retrieving messages"));

            List<DequeueListItem> results = new List<DequeueListItem>();

            var messages = filters.Filter(Repository);

            foreach (var message in messages.ToList())
            {
                MailMessage mailMessage = GetMailMessage(message, overrides);

                results.Add(new DequeueListItem(message, mailMessage));
            }

            TroutLog.Log.Info(string.Format("Retrieved {0} messages", results.Count));

            return results;
        }
Exemple #12
0
        protected override Stream UnParse()
        {
            var s = new MemoryStream();
            var w = new BinaryWriter(s);

            w.Write(this.version);
            w.Write(0); // tgi offset
            w.Write(this.presetCount);
            BigEndianUnicodeString.Write(s, this.name);
            w.Write(this.sortPriority);
            w.Write(this.secondarySortIndex);
            w.Write(this.propertyID);
            w.Write(this.auralMaterialHash);
            w.Write((byte)this.parmFlags);
            w.Write((ulong)this.excludePartFlags);
            if (this.version >= 36)
            {
                w.Write(this.excludeModifierRegionFlags);
            }
            else
            {
                w.Write((uint)this.excludeModifierRegionFlags);
            }

            this.flagList = this.flagList ?? new FlagList(this.OnResourceChanged);
            if (this.version >= 37)
            {
                this.flagList.UnParse(s);
            }
            else
            {
                this.flagList.WriteUInt16Flags(s);
            }
            w.Write(this.deprecatedPrice);
            w.Write(this.partTitleKey);
            w.Write(this.partDesptionKey);
            w.Write(this.uniqueTextureSpace);
            w.Write((uint)this.bodyType);
            w.Write(this.bodySubType);
            w.Write((uint)this.ageGender);
            if (this.version >= 0x20)
            {
                w.Write(this.reserved1);
            }
            if (this.version >= 34)
            {
                w.Write(this.packID);
                w.Write((byte)this.packFlags);
                if (this.reserved2 == null)
                {
                    this.reserved2 = new byte[9];
                }
                w.Write(this.reserved2);
            }
            else
            {
                w.Write(this.unused2);
                if (this.unused2 > 0)
                {
                    w.Write(this.unused3);
                }
            }
            if (this.swatchColorCode == null)
            {
                this.swatchColorCode = new SwatchColorList(this.OnResourceChanged);
            }
            this.swatchColorCode.UnParse(s);
            w.Write(this.buffResKey);
            w.Write(this.varientThumbnailKey);
            if (this.version >= 0x1C)
            {
                w.Write(this.voiceEffectHash);
            }
            if (this.version >= 0x1E)
            {
                w.Write(this.usedMaterialCount);
                if (this.usedMaterialCount > 0)
                {
                    w.Write(this.materialSetUpperBodyHash);
                    w.Write(this.materialSetLowerBodyHash);
                    w.Write(this.materialSetShoesHash);
                }
            }
            if (this.version >= 0x1F)
            {
                w.Write((uint)this.hideForOccultFlags);
            }
            w.Write(this.nakedKey);
            w.Write(this.parentKey);
            w.Write(this.sortLayer);
            if (this.lodBlockList == null)
            {
                this.lodBlockList = new LODBlockList(this.OnResourceChanged);
            }
            this.lodBlockList.UnParse(s);
            if (this.slotKey == null)
            {
                this.slotKey = new SimpleList <byte>(this.OnResourceChanged);
            }
            w.Write((byte)this.slotKey.Count);
            foreach (var b in this.slotKey)
            {
                w.Write(b);
            }
            w.Write(this.diffuseShadowKey);
            w.Write(this.shadowKey);
            w.Write(this.compositionMethod);
            w.Write(this.regionMapKey);
            if (this.overrides == null)
            {
                this.overrides = new OverrideList(this.OnResourceChanged);
            }
            this.overrides.UnParse(s);
            w.Write(this.normalMapKey);
            w.Write(this.specularMapKey);
            if (this.version >= 0x1B)
            {
                w.Write(this.sharedUVMapSpace);
            }
            if (this.version >= 0x1E)
            {
                w.Write(this.emissionMapKey);
            }
            var tgiPosition = w.BaseStream.Position;

            w.BaseStream.Position = 4;
            w.Write(tgiPosition - 8);
            w.BaseStream.Position = tgiPosition;
            if (this.tgiList == null)
            {
                this.tgiList = new CountedTGIBlockList(this.OnResourceChanged);
            }
            w.Write((byte)this.tgiList.Count);
            foreach (var tgi in this.tgiList)
            {
                tgi.UnParse(s);
            }

            return(s);
        }
        protected override bool ParseArguments(string[] args)
        {
            filterList = new DequeueFilterList();
            overrideList = new OverrideList();

            bool dateRangeApplied = false;
            DateTime dateFrom = DateTime.MinValue, dateTo = DateTime.MaxValue;
            bool idRangeApplied = false;
            int idMin = 0, idMax = int.MaxValue;

            OptionSet optionSet = new OptionSet()
                //filters
                .Add("tf=|tofilter=", v => filterList.And(new ToFilter(v)))
                .Add("bcf=|bodycontainsfilter=", v => filterList.And(new BodyContainsFilter(v)))
                .Add("bef=|bodyexactfilter=", v => filterList.And(new BodyExactFilter(v)))
                .Add("fd=|fromdate=", (DateTime v) => { dateRangeApplied = true; dateFrom = v; })
                .Add("td=|todate=", (DateTime v) => { dateRangeApplied = true; dateTo = v; })
                .Add("idf=|idfilter=|id=", (int v) => filterList.And(new IdDequeueFilter(v)))
                .Add("rtf=|retriesfilter=", (byte v) => filterList.And(new RetriesFilter(v)))
                .Add("sent=|sentfilter=|issent=", (bool v) => filterList.And(new SentStatusDequeueFilter(v)))
                .Add("scf=|subjectcontainsfilter=", v => filterList.And(new SubjectContainsFilter(v)))
                .Add("sef=|subjectexactfilter=", v => filterList.And(new SubjectExactFilter(v)))
                .Add("idrf=|idfrom=", (int v) => { idRangeApplied = true; idMin = v; })
                .Add("idrt=|idto=", (int v) => { idRangeApplied = true; idMax = v; })
                .Add("haf|hasattachmentsfilter", "filter on whether an email has attachments", v => filterList.And(new HasAttachmentsFilter(true)))

                //overrides
                .Add("to=|tooverride=", v=> overrideList.Add(new ToOverride().Override(v)))
                .Add("cc=|ccoverride=", v => overrideList.Add(new CcOverride().Override(v)))
                .Add("bcc=|bccoverride=", v => overrideList.Add(new BccOverride().Override(v)))
                .Add("subject=|subjectoverride=", v => overrideList.Add(new SubjectOverride().Override(v)))
                .Add("body=|bodyoverride=", v => overrideList.Add(new BodyOverride().Override(v)))

                .Add("toa=|toappend=", v => overrideList.Add(new ToOverride().Append(v)))
                .Add("cca=|ccappend=", v => overrideList.Add(new CcOverride().Append(v)))
                .Add("bcca=|bccappend=", v => overrideList.Add(new BccOverride().Append(v)))
                .Add("subjecta=|subjectappend=", v => overrideList.Add(new SubjectOverride().Append(v)))
                .Add("bodya=|bodyappend=", v => overrideList.Add(new BodyOverride().Append(v)))

                .Add("top=|toprepend=", v => overrideList.Add(new ToOverride().Prepend(v)))
                .Add("ccp=|ccprepend=", v => overrideList.Add(new CcOverride().Prepend(v)))
                .Add("bccp=|bccprepend=", v => overrideList.Add(new BccOverride().Prepend(v)))
                .Add("subjectp=|subjectprepend=", v => overrideList.Add(new SubjectOverride().Prepend(v)))
                .Add("bodyp=|bodyprepend=", v => overrideList.Add(new BodyOverride().Prepend(v)))

                .Add("da|donotaudit", "whether to audit whether the email was sent (default=true)" , v => Audit = false)
                ;

            try
            {
                optionSet.Parse(args);
            }
            catch (OptionException)
            {
                Console.WriteLine("Error");
                return false;
            }

            if (dateRangeApplied)
            {
                filterList.And(new DateRangeFilter(dateFrom, dateTo));
            }

            if (idRangeApplied)
            {
                filterList.And(new IdRangeDequeueFilter(idMin, idMax));
            }

            return true;
        }
Exemple #14
0
        /// <summary>
        /// Sends the messages which match the filters and applies the overrides prior to sending
        /// </summary>
        /// <param name="filters"></param>
        /// <param name="overrides"></param>
        /// <param name="audit">whether to change the sent status and number of tries for an email</param>
        /// <returns></returns>
        public IEnumerable <DequeueResultItem> SendQueuedMessages(DequeueFilterList filters, OverrideList overrides, bool audit = true)
        {
            if (filters == null)
            {
                throw new ArgumentNullException("filters");
            }
            if (overrides == null)
            {
                throw new ArgumentNullException("overrides");
            }

            TroutLog.Log.Info(string.Format("Beginning dequeuing with{0} auditing at", audit ? "" : "out"));

            List <DequeueResultItem> results = new List <DequeueResultItem>();
            var messages = filters.Filter(Repository);

            foreach (var message in messages.ToList())
            {
                MailMessage mailMessage = GetMailMessage(message, overrides);

                foreach (var attachment in AttachmentFileSystem.GetAttachments(message))
                {
                    mailMessage.Attachments.Add(attachment);
                }

                var result = SmtpClient.Send(mailMessage);
                results.Add(new DequeueResultItem(message, result.IsSuccess, result.Message, mailMessage, result.Tries));

                TroutLog.Log.Info(string.Format("{0} was {1}sent with message - {2} after {3} tries.", message.ID, result.IsSuccess ? "" : "not ", result.Message, result.Tries));

                if (audit)
                {
                    if (result.IsSuccess)
                    {
                        message.IsSent   = true;
                        message.SendDate = DateTime.Now;
                    }
                    else
                    {
                        message.IsSent   = false;
                        message.SendDate = null;
                    }

                    message.NumberTries++;
                    message.LastTryDate = DateTime.Now;
                }
            }

            TroutLog.Log.Info(string.Format("Saving of dequeue results"));
            Repository.SaveChanges();


            return(results);
        }
Exemple #15
0
        /// <summary>
        /// Returns emails which match the filter with the provided overrides applied.
        /// </summary>
        /// <param name="filters"></param>
        /// <param name="overrides"></param>
        /// <returns></returns>
        public IEnumerable <DequeueListItem> GetQueuedMessages(DequeueFilterList filters, OverrideList overrides)
        {
            if (filters == null)
            {
                throw new ArgumentNullException("filters");
            }
            if (overrides == null)
            {
                throw new ArgumentNullException("overrides");
            }

            TroutLog.Log.Info(string.Format("Retrieving messages"));

            List <DequeueListItem> results = new List <DequeueListItem>();

            var messages = filters.Filter(Repository);

            foreach (var message in messages.ToList())
            {
                MailMessage mailMessage = GetMailMessage(message, overrides);

                results.Add(new DequeueListItem(message, mailMessage));
            }

            TroutLog.Log.Info(string.Format("Retrieved {0} messages", results.Count));

            return(results);
        }
Exemple #16
0
        protected override bool ParseArguments(string[] args)
        {
            filterList   = new DequeueFilterList();
            overrideList = new OverrideList();

            bool     dateRangeApplied = false;
            DateTime dateFrom = DateTime.MinValue, dateTo = DateTime.MaxValue;
            bool     idRangeApplied = false;
            int      idMin = 0, idMax = int.MaxValue;

            OptionSet optionSet = new OptionSet()
                                  //filters
                                  .Add("tf=|tofilter=", v => filterList.And(new ToFilter(v)))
                                  .Add("bcf=|bodycontainsfilter=", v => filterList.And(new BodyContainsFilter(v)))
                                  .Add("bef=|bodyexactfilter=", v => filterList.And(new BodyExactFilter(v)))
                                  .Add("fd=|fromdate=", (DateTime v) => { dateRangeApplied = true; dateFrom = v; })
                                  .Add("td=|todate=", (DateTime v) => { dateRangeApplied = true; dateTo = v; })
                                  .Add("idf=|idfilter=|id=", (int v) => filterList.And(new IdDequeueFilter(v)))
                                  .Add("rtf=|retriesfilter=", (byte v) => filterList.And(new RetriesFilter(v)))
                                  .Add("sent=|sentfilter=|issent=", (bool v) => filterList.And(new SentStatusDequeueFilter(v)))
                                  .Add("scf=|subjectcontainsfilter=", v => filterList.And(new SubjectContainsFilter(v)))
                                  .Add("sef=|subjectexactfilter=", v => filterList.And(new SubjectExactFilter(v)))
                                  .Add("idrf=|idfrom=", (int v) => { idRangeApplied = true; idMin = v; })
                                  .Add("idrt=|idto=", (int v) => { idRangeApplied = true; idMax = v; })
                                  .Add("haf|hasattachmentsfilter", "filter on whether an email has attachments", v => filterList.And(new HasAttachmentsFilter(true)))

                                  //overrides
                                  .Add("to=|tooverride=", v => overrideList.Add(new ToOverride().Override(v)))
                                  .Add("cc=|ccoverride=", v => overrideList.Add(new CcOverride().Override(v)))
                                  .Add("bcc=|bccoverride=", v => overrideList.Add(new BccOverride().Override(v)))
                                  .Add("subject=|subjectoverride=", v => overrideList.Add(new SubjectOverride().Override(v)))
                                  .Add("body=|bodyoverride=", v => overrideList.Add(new BodyOverride().Override(v)))

                                  .Add("toa=|toappend=", v => overrideList.Add(new ToOverride().Append(v)))
                                  .Add("cca=|ccappend=", v => overrideList.Add(new CcOverride().Append(v)))
                                  .Add("bcca=|bccappend=", v => overrideList.Add(new BccOverride().Append(v)))
                                  .Add("subjecta=|subjectappend=", v => overrideList.Add(new SubjectOverride().Append(v)))
                                  .Add("bodya=|bodyappend=", v => overrideList.Add(new BodyOverride().Append(v)))

                                  .Add("top=|toprepend=", v => overrideList.Add(new ToOverride().Prepend(v)))
                                  .Add("ccp=|ccprepend=", v => overrideList.Add(new CcOverride().Prepend(v)))
                                  .Add("bccp=|bccprepend=", v => overrideList.Add(new BccOverride().Prepend(v)))
                                  .Add("subjectp=|subjectprepend=", v => overrideList.Add(new SubjectOverride().Prepend(v)))
                                  .Add("bodyp=|bodyprepend=", v => overrideList.Add(new BodyOverride().Prepend(v)))

                                  .Add("da|donotaudit", "whether to audit whether the email was sent (default=true)", v => Audit = false)
            ;

            try
            {
                optionSet.Parse(args);
            }
            catch (OptionException)
            {
                Console.WriteLine("Error");
                return(false);
            }

            if (dateRangeApplied)
            {
                filterList.And(new DateRangeFilter(dateFrom, dateTo));
            }

            if (idRangeApplied)
            {
                filterList.And(new IdRangeDequeueFilter(idMin, idMax));
            }

            return(true);
        }
Exemple #17
0
        private void Parse(Stream s)
        {
            s.Position = 0;
            var r = new BinaryReader(s);

            this.version     = r.ReadUInt32();
            this.TGIoffset   = r.ReadUInt32() + 8;
            this.presetCount = r.ReadUInt32();
            if (this.presetCount != 0)
            {
                throw new Exception("Found non-zero one");
            }
            this.name = BigEndianUnicodeString.Read(s);

            this.sortPriority       = r.ReadSingle();
            this.secondarySortIndex = r.ReadUInt16();
            this.propertyID         = r.ReadUInt32();
            this.auralMaterialHash  = r.ReadUInt32();
            this.parmFlags          = (ParmFlag)r.ReadByte();
            this.excludePartFlags   = (ExcludePartFlag)r.ReadUInt64();
            if (this.version >= 36)
            {
                this.excludeModifierRegionFlags = r.ReadUInt64();
            }
            else
            {
                this.excludeModifierRegionFlags = r.ReadUInt32();
            }

            if (this.version >= 37)
            {
                this.flagList = new FlagList(this.OnResourceChanged, s);
            }
            else
            {
                this.flagList = FlagList.CreateWithUInt16Flags(this.OnResourceChanged, s, recommendedApiVersion);
            }

            this.deprecatedPrice    = r.ReadUInt32();
            this.partTitleKey       = r.ReadUInt32();
            this.partDesptionKey    = r.ReadUInt32();
            this.uniqueTextureSpace = r.ReadByte();
            this.bodyType           = (BodyType)r.ReadInt32();
            this.bodySubType        = r.ReadInt32();
            this.ageGender          = (AgeGenderFlags)r.ReadUInt32();
            if (this.version >= 0x20)
            {
                this.reserved1 = r.ReadUInt32();
            }
            if (this.version >= 34)
            {
                this.packID    = r.ReadInt16();
                this.packFlags = (PackFlag)r.ReadByte();
                this.reserved2 = r.ReadBytes(9);
            }
            else
            {
                this.packID  = 0;
                this.unused2 = r.ReadByte();
                if (this.unused2 > 0)
                {
                    this.unused3 = r.ReadByte();
                }
            }

            this.swatchColorCode = new SwatchColorList(this.OnResourceChanged, s);

            this.buffResKey          = r.ReadByte();
            this.varientThumbnailKey = r.ReadByte();
            if (this.version >= 0x1C)
            {
                this.voiceEffectHash = r.ReadUInt64();
            }
            if (this.version >= 0x1E)
            {
                this.usedMaterialCount = r.ReadByte();
                if (this.usedMaterialCount > 0)
                {
                    this.materialSetUpperBodyHash = r.ReadUInt32();
                    this.materialSetLowerBodyHash = r.ReadUInt32();
                    this.materialSetShoesHash     = r.ReadUInt32();
                }
            }
            if (this.version >= 0x1F)
            {
                this.hideForOccultFlags = (OccultTypesDisabled)r.ReadUInt32();
            }
            this.nakedKey  = r.ReadByte();
            this.parentKey = r.ReadByte();
            this.sortLayer = r.ReadInt32();

            // Don't move any of this before the -----
            // TGI block list
            var currentPosition = r.BaseStream.Position;

            r.BaseStream.Position = this.TGIoffset;
            var count4 = r.ReadByte();

            this.tgiList          = new CountedTGIBlockList(this.OnResourceChanged, "IGT", count4, s);
            r.BaseStream.Position = currentPosition;
            this.lodBlockList     = new LODBlockList(null, s, this.tgiList);
            //-------------

            var count = r.ReadByte();

            this.slotKey = new SimpleList <byte>(null);
            for (byte i = 0; i < count; i++)
            {
                this.slotKey.Add(r.ReadByte());
            }

            this.diffuseShadowKey  = r.ReadByte();
            this.shadowKey         = r.ReadByte();
            this.compositionMethod = r.ReadByte();
            this.regionMapKey      = r.ReadByte();
            this.overrides         = new OverrideList(null, s);
            this.normalMapKey      = r.ReadByte();
            this.specularMapKey    = r.ReadByte();
            if (this.version >= 0x1B)
            {
                this.sharedUVMapSpace = r.ReadUInt32();
            }
            if (this.version >= 0x1E)
            {
                this.emissionMapKey = r.ReadByte();
            }
        }