Ejemplo n.º 1
0
        protected override object CoreGetModelObject(IDictionary <string, IList <string> > properties)
        {
            const string PROP_TOKEN_SOURCE_FILE_PATH = "SourceFilePath";

            string               sourceFilePath = null;
            IList <string>       values;
            IConfigurationObject sourceObject;

            ICommonSerializationStrategy nativeXmlSerializationStrategy;
            IXyzlSerializer xyzlSerializer;

            if ((object)properties == null)
            {
                throw new ArgumentNullException(nameof(properties));
            }

            if (properties.TryGetValue(PROP_TOKEN_SOURCE_FILE_PATH, out values))
            {
                if ((object)values != null && values.Count == 1)
                {
                    sourceFilePath = values[0];
                }
            }

            if (SolderFascadeAccessor.DataTypeFascade.IsWhiteSpace(sourceFilePath))
            {
                throw new InvalidOperationException(String.Format("The source file path cannot be null or whitespace."));
            }

            sourceFilePath = Path.GetFullPath(sourceFilePath);

            xyzlSerializer = this.CoreGetXyzlSerializer(properties);
            nativeXmlSerializationStrategy = new NativeXyzlSerializationStrategy(xyzlSerializer);

            sourceObject = nativeXmlSerializationStrategy.DeserializeObjectFromFile <IConfigurationObject>(sourceFilePath);

            return(sourceObject);
        }
Ejemplo n.º 2
0
        public async ValueTask <EmailMessage> HostAsync(bool strictMatching, EmailPrototype emailPrototype, object textMetalModel)
        {
            ITextMetalTemplateObject textMetalTemplate;
            EmailMessage             emailMessage;

            INativeXmlSerializationStrategy nativeXmlSerializationStrategy;
            IXyzlSerializer xyzlSerializer;
            XmlTextReader   templateXmlTextReader;

            if ((object)emailPrototype == null)
            {
                throw new ArgumentNullException(nameof(emailPrototype));
            }

            emailMessage = new EmailMessage();

            xyzlSerializer = new XyzlSerializer(SolderFascadeAccessor.DataTypeFascade, SolderFascadeAccessor.ReflectionFascade);
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "From", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "To", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "ReplyTo", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "Sender", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "CarbonCopy", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "BlindCarbonCopy", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "Subject", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });
            xyzlSerializer.RegisterKnownObject <EmailTemplateEchoFragment>(new XyzlName()
            {
                LocalName = "Body", NamespaceUri = "http://textmetal.wellengineered.us/stdlib/v6.0.0"
            });

            //xyzlSerializer.RegisterKnownValueObject<TextMetalTemplateTextObject>();

            nativeXmlSerializationStrategy = new NativeXyzlSerializationStrategy(xyzlSerializer);

            await using (ITextMetalContext textMetalContext = this.CreateContext())
            {
                textMetalContext.IteratorModels.Push(textMetalModel);

                // FROM
                if ((object)emailPrototype.FromXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.FromXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.From = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // SENDER
                if ((object)emailPrototype.SenderXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.SenderXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.Sender = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // REPLY_TO
                if ((object)emailPrototype.ReplyToXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.ReplyToXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.ReplyTo = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // TO
                if ((object)emailPrototype.ToXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.ToXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.To = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // CC
                if ((object)emailPrototype.CarbonCopyXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.CarbonCopyXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.CarbonCopy = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // BCC
                if ((object)emailPrototype.BlindCarbonCopyXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.BlindCarbonCopyXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.BlindCarbonCopy = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // SUBJECT
                if ((object)emailPrototype.SubjectXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.SubjectXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.Subject = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                // IS_BODY_HTML
                emailMessage.IsBodyHtml = emailPrototype.IsBodyHtml;

                // BODY
                if ((object)emailPrototype.BodyXml != null)
                {
                    using (templateXmlTextReader = new XmlTextReader(new StringReader(emailPrototype.BodyXml.OuterXml)))
                        textMetalTemplate = await nativeXmlSerializationStrategy.DeserializeObjectFromNativeAsync <ITextMetalTemplateObject>(templateXmlTextReader);

                    await textMetalTemplate.ExpandTemplateAsync(textMetalContext);

                    emailMessage.Body = this.StringWriter.ToString();
                    this.StringWriter.GetStringBuilder().Clear();
                }

                textMetalContext.IteratorModels.Pop();
            }

            return(emailMessage);
        }