Esempio n. 1
0
        private static void SendErrorMessage(Exception ex)
        {
            CustomError error = new CustomError();

            error.application_name = "frontend";
            error.timestamp        = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff");
            error.message          = ex.ToString();

            //Make an XML from the error object
            XmlSerializer           xmlSerializer = new XmlSerializer(typeof(CustomError));
            XmlSerializerNamespaces ns            = new XmlSerializerNamespaces();

            ns.Add("", "");

            string xml;
            var    settings = new XmlWriterSettings {
                Encoding = Encoding.UTF8, Indent = true
            };
            var stringBuilder = new StringBuilder();

            using (var sww = new ExtendedStringWriter(stringBuilder, Encoding.UTF8))
            {
                using (XmlWriter writer = XmlWriter.Create(sww, settings))
                {
                    xmlSerializer.Serialize(writer, error, ns);
                    xml = sww.ToString();
                }
            }

            //XML validation with XSD
            var xmlValidationResponse = XsdValidation.XmlStringValidation(xml);

            if (xmlValidationResponse != null)
            {
                using (var connection = factory.CreateConnection())
                    using (var channel = connection.CreateModel())
                    {
                        var addUserBody = Encoding.UTF8.GetBytes(xml);
                        channel.BasicPublish(exchange: "logs.exchange",
                                             routingKey: "",
                                             body: addUserBody
                                             );
                    }
            }
        }
Esempio n. 2
0
        private static void SendLogToLogExchange(string action)
        {
            //make log file entity
            Log log = new Log("Frontend " + action);

            //Make an XML from the object
            XmlSerializer           xmlSerializer = new XmlSerializer(log.GetType());
            XmlSerializerNamespaces ns            = new XmlSerializerNamespaces();

            ns.Add("", "");

            string xml;
            var    settings = new XmlWriterSettings {
                Encoding = Encoding.UTF8, Indent = true
            };
            var stringBuilder = new StringBuilder();

            using (var sww = new ExtendedStringWriter(stringBuilder, Encoding.UTF8))
            {
                using (XmlWriter writer = XmlWriter.Create(sww, settings))
                {
                    xmlSerializer.Serialize(writer, log, ns);
                    xml = sww.ToString();
                }
            }

            //Validate XML
            var xmlResponse = XsdValidation.XmlStringValidation(xml);

            //when no errors send the message to rabbitmq
            if (xmlResponse != null)
            {
                using (var connection = factory.CreateConnection())
                    using (var channel = connection.CreateModel())
                    {
                        var addUserBody = Encoding.UTF8.GetBytes(xml);
                        channel.BasicPublish(exchange: "logs.exchange",
                                             routingKey: "",
                                             body: addUserBody
                                             );
                    }
            }
        }
        private static void SendMessageToErrorExchange(Exception error)
        {
            CustomError customError = new CustomError();

            customError.application_name = "frontend";
            customError.timestamp        = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff");
            customError.message          = error.ToString();

            //Make an XML from the error object
            XmlSerializer           xmlSerializer = new XmlSerializer(typeof(CustomError));
            XmlSerializerNamespaces ns            = new XmlSerializerNamespaces();

            ns.Add("", "");

            string xml;
            var    settings = new XmlWriterSettings {
                Encoding = Encoding.UTF8, Indent = true
            };
            var stringBuilder = new StringBuilder();

            using (var sww = new ExtendedStringWriter(stringBuilder, Encoding.UTF8))
            {
                using (XmlWriter writer = XmlWriter.Create(sww, settings))
                {
                    xmlSerializer.Serialize(writer, customError, ns);
                    xml = sww.ToString();
                }
            }

            //XML validation with XSD
            string xsdData =
                @"<?xml version='1.0'?>
                        <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> 
                            <xs:element name='error'>  
                                <xs:complexType>   
                                    <xs:sequence>    
                                        <xs:element name='application_name' type='xs:string'/>       
                                        <xs:element name='timestamp' type='xs:string'/>          
                                        <xs:element name='message' type='xs:string'/>             
                                    </xs:sequence>              
                                </xs:complexType>               
                            </xs:element>
                        </xs:schema>";

            XmlSchemaSet schemas = new XmlSchemaSet();

            schemas.Add("", XmlReader.Create(new StringReader(xsdData)));

            var  xDoc   = XDocument.Parse(xml);
            bool errors = false;

            xDoc.Validate(schemas, (o, e) =>
            {
                errors = true;
            });

            if (!errors)
            {
                using (var connection = factory.CreateConnection())
                    using (var channel = connection.CreateModel())
                    {
                        var addUserBody = Encoding.UTF8.GetBytes(xml);
                        channel.BasicPublish(exchange: "errors.exchange",
                                             routingKey: "",
                                             body: addUserBody
                                             );
                    }
            }
        }
Esempio n. 4
0
        public static string XmlObjectValidation(IXsdValidation objectThatNeedsValidation)
        {
            //Make an XML from the object
            XmlSerializer           xmlSerializer = new XmlSerializer(objectThatNeedsValidation.GetType());
            XmlSerializerNamespaces ns            = new XmlSerializerNamespaces();

            ns.Add("", "");

            string xml;
            var    settings = new XmlWriterSettings {
                Encoding = Encoding.UTF8, Indent = true
            };
            var stringBuilder = new StringBuilder();

            using (var sww = new ExtendedStringWriter(stringBuilder, Encoding.UTF8))
            {
                using (XmlWriter writer = XmlWriter.Create(sww, settings))
                {
                    xmlSerializer.Serialize(writer, objectThatNeedsValidation, ns);
                    xml = sww.ToString();
                }
            }

            //XML validation with XSD

            //Select the xsd file
            string xsdData = "";

            if (typeof(PatchUserFromFrontend).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdPatchUser;
            }
            else if (typeof(AddUserFromFrontend).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdAddUser;
            }
            else if (typeof(RequestInvoiceFromFrontend).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdRequestInvoice;
            }
            else if (typeof(Log).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdLog;
            }
            else if (typeof(CustomError).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdError;
            }
            else if (typeof(EmailEvent).IsInstanceOfType(objectThatNeedsValidation))
            {
                xsdData = xsdEmailEvent;
            }
            else
            {
                return(null);
            }

            XmlSchemaSet schemas = new XmlSchemaSet();

            schemas.Add("", XmlReader.Create(new StringReader(xsdData)));

            //Validation of XML
            var  xDoc   = XDocument.Parse(xml);
            bool errors = false;

            xDoc.Validate(schemas, (o, e) =>
            {
                errors = true;
            });

            //Return null when validation has errors
            if (errors)
            {
                return(null);
            }
            else
            {
                return(xml);
            }
        }