Esempio n. 1
0
        private MessageEncoder GetEncoder(string contentType)
        {
            //todo: this method is not completely implemented. Look at comments bellow.
            if (Regex.IsMatch(contentType, "^multipart.*"))
            {
                var mtomBindingElement = new MtomMessageEncodingBindingElement(_factory.MessageVersion, Encoding.GetEncoding(_factory.CharSet));
                var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();
                return(mtomFactory.Encoder);
                //return _mtomEncoder;
            }
            else // if (...)
            {
                var textBindingElement = new TextMessageEncodingBindingElement(_factory.MessageVersion, Encoding.GetEncoding(_factory.CharSet));
                //textBindingElement.ReaderQuotas.MaxStringContentLength = 65535;
                //textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 65535;
                textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 1024 * 1024 * 16;

                var textFactory = textBindingElement.CreateMessageEncoderFactory();
                return(textFactory.Encoder);
                //return _textEncoder;
            }
            //else if (...)
            //{
            //    return new BinaryMessageEncodingBindingElement();
            //}
            throw new NotSupportedException(string.Format("Unexpected content-type: \"{0}\".", contentType));
        }
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        public TextOrMtomEncoder(MessageVersion messageVersion, XmlDictionaryReaderQuotas readerQuotas, int maxReadPoolSize, int maxWritePoolSize, int maxBufferSize)
        {
            if (messageVersion is null)
            {
                throw new ArgumentNullException(nameof(messageVersion));
            }
            if (readerQuotas is null)
            {
                throw new ArgumentNullException(nameof(readerQuotas));
            }

            var textEncoderBindingElement = new TextMessageEncodingBindingElement(messageVersion, Encoding.UTF8);

            textEncoderBindingElement.MaxReadPoolSize  = maxReadPoolSize;
            textEncoderBindingElement.MaxWritePoolSize = maxWritePoolSize;
            readerQuotas.CopyTo(textEncoderBindingElement.ReaderQuotas);
            text = textEncoderBindingElement.CreateMessageEncoderFactory().Encoder;

            if (messageVersion.Envelope != EnvelopeVersion.None)
            {
                var mtomEncoderBindingElement = new MtomMessageEncodingBindingElement(messageVersion, Encoding.UTF8);
                mtomEncoderBindingElement.MaxBufferSize    = maxBufferSize;
                mtomEncoderBindingElement.MaxReadPoolSize  = maxReadPoolSize;
                mtomEncoderBindingElement.MaxWritePoolSize = maxWritePoolSize;
                readerQuotas.CopyTo(mtomEncoderBindingElement.ReaderQuotas);
                mtom = mtomEncoderBindingElement.CreateMessageEncoderFactory().Encoder;
            }
        }
        /// <summary>
        /// Initializes a new instance of the WOPIMessageEncoder class with the specified message encoder factory.
        /// </summary>
        /// <param name="factory">Specify the message encoder factory.</param>
        public WOPIMessageEncoder(WOPIMessageEncoderFactory factory)
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement();
            element.MessageVersion = factory.MessageVersion;
            element.WriteEncoding = Encoding.GetEncoding(factory.CharSet);

            this.innerEncoder = element.CreateMessageEncoderFactory().Encoder;
            this.factory = factory;
            this.contentType = string.Format("{0}; charset={1}", "text/xml", this.factory.CharSet);
        }
Esempio n. 4
0
        internal void SerializeReply()
        {
            MessageEncodingBindingElement mebe = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
            MessageEncoderFactory         mef  = mebe.CreateMessageEncoderFactory();
            MessageEncoder me = mef.Encoder;
            MemoryStream   ms = new MemoryStream();

            me.WriteMessageAsync(ReplyMessage, ms);
            byte[] messageBytes = ms.ToArray();
            _replyMessageString = Encoding.UTF8.GetString(messageBytes);
        }
Esempio n. 5
0
        private static Task <Message> DeserialzieMessageFromStreamAsync(MemoryStream ms, MessageVersion messageVersion)
        {
            var tmebe = new TextMessageEncodingBindingElement
            {
                MessageVersion = messageVersion,
                ReaderQuotas   = XmlDictionaryReaderQuotas.Max
            };
            MessageEncoderFactory tmef = tmebe.CreateMessageEncoderFactory();

            return(tmef.Encoder.ReadMessageAsync(ms, int.MaxValue));
        }
        /// <summary>
        /// Initializes a new instance of the WOPIMessageEncoder class with the specified message encoder factory.
        /// </summary>
        /// <param name="factory">Specify the message encoder factory.</param>
        public WOPIMessageEncoder(WOPIMessageEncoderFactory factory)
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement();

            element.MessageVersion = factory.MessageVersion;
            element.WriteEncoding  = Encoding.GetEncoding(factory.CharSet);

            this.innerEncoder = element.CreateMessageEncoderFactory().Encoder;
            this.factory      = factory;
            this.contentType  = string.Format("{0}; charset={1}", "text/xml", this.factory.CharSet);
        }
Esempio n. 7
0
        internal static TestRequestContext Create(string toAddress)
        {
            MessageEncodingBindingElement mebe = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
            var mef = mebe.CreateMessageEncoderFactory();
            var me  = mef.Encoder;
            var requestMessageBytes = Encoding.UTF8.GetBytes(s_requestMessage);
            var requestMessage      = me.ReadMessage(new ArraySegment <byte>(requestMessageBytes), BufferManager.CreateBufferManager(1, 1));

            requestMessage.Headers.To     = new Uri(toAddress);
            requestMessage.Headers.Action = "http://tempuri.org/ISimpleService/Echo";
            return(new TestRequestContext(requestMessage));
        }
        public RabbitMQInputChannel(BindingContext context, IModel model, EndpointAddress address)
            : base(context, address)
        {
            m_bindingElement = context.Binding.Elements.Find <RabbitMQTransportBindingElement>();
            TextMessageEncodingBindingElement encoderElem = context.BindingParameters.Find <TextMessageEncodingBindingElement>();

            encoderElem.ReaderQuotas.MaxStringContentLength = (int)m_bindingElement.MaxReceivedMessageSize;
            if (encoderElem != null)
            {
                m_encoder = encoderElem.CreateMessageEncoderFactory().Encoder;
            }
            m_model        = model;
            m_messageQueue = null;
        }
Esempio n. 9
0
        private static MemoryStream SerializeMessageToStream(Message requestMessage)
        {
            var tmebe = new TextMessageEncodingBindingElement
            {
                MessageVersion = requestMessage.Version,
                ReaderQuotas   = XmlDictionaryReaderQuotas.Max
            };
            MessageEncoderFactory tmef = tmebe.CreateMessageEncoderFactory();
            var ms = new MemoryStream(64 * 1024); // 64K to keep out of LOH

            tmef.Encoder.WriteMessageAsync(requestMessage, ms);
            ms.Position = 0;
            return(ms);
        }
Esempio n. 10
0
        public void TestContentType()
        {
            var element = new TextMessageEncodingBindingElement();

            element.WriteEncoding  = Encoding.UTF8;
            element.MessageVersion = MessageVersion.Soap11;
            var factory = element.CreateMessageEncoderFactory();
            var encoder = factory.CreateSessionEncoder();

            Assert.That(encoder.IsContentTypeSupported("text/xmL;chaRset=uTf-8"), Is.True, "#1");
            Assert.That(encoder.IsContentTypeSupported("text/xMl"), Is.True, "#2");
            Assert.That(encoder.IsContentTypeSupported("teXt/xml;foo=bar;charset=utf-8"), Is.True, "#3");
            Assert.That(encoder.IsContentTypeSupported("teXt/xml;charset=ascii"), Is.False, "#4");
        }
Esempio n. 11
0
        static int SizeOfTextMessage(Message message)
        {
            // Create a text encoder
            MessageEncodingBindingElement element = new TextMessageEncodingBindingElement();
            MessageEncoderFactory factory = element.CreateMessageEncoderFactory();
            MessageEncoder encoder = factory.Encoder;

            // Write the message and return its length
            MemoryStream stream = new MemoryStream();
            encoder.WriteMessage(message, stream);
            int size = (int)stream.Length;
            
            message.Close();
            stream.Close();
            return size;
        }
Esempio n. 12
0
        static int SizeOfTextMessage(Message message)
        {
            // Create a text encoder
            MessageEncodingBindingElement element = new TextMessageEncodingBindingElement();
            MessageEncoderFactory         factory = element.CreateMessageEncoderFactory();
            MessageEncoder encoder = factory.Encoder;

            // Write the message and return its length
            MemoryStream stream = new MemoryStream();

            encoder.WriteMessage(message, stream);
            int size = (int)stream.Length;

            message.Close();
            stream.Close();
            return(size);
        }
Esempio n. 13
0
        public CustomTextMessageEncoder(CustomTextMessageEncoderFactory factory)
        {
            this.factory = factory;

            this.writerSettings          = new XmlWriterSettings();
            this.writerSettings.Encoding = Encoding.GetEncoding(factory.CharSet);
            this.contentType             = string.Format("{0}; charset={1}",
                                                         this.factory.MediaType, this.writerSettings.Encoding.HeaderName);

            MessageEncoderFactory             baseFactory;
            TextMessageEncodingBindingElement element =
                new TextMessageEncodingBindingElement(factory.MessageVersion, Encoding.GetEncoding(factory.CharSet));

            baseFactory = element.CreateMessageEncoderFactory();

            baseEncoder = baseFactory.Encoder;
        }
        public RabbitMQInputChannel(BindingContext bindingContext, IModel model, EndpointAddress address)
            : base(bindingContext, address)
        {
            this._bindingElement = bindingContext.Binding.Elements.Find <RabbitMQTransportBindingElement>();
            this._model          = model;
            this._queue          = new BlockingCollection <BasicDeliverEventArgs>(new ConcurrentQueue <BasicDeliverEventArgs>());

            TextMessageEncodingBindingElement encoderElement = bindingContext.BindingParameters.Find <TextMessageEncodingBindingElement>();

            if (encoderElement != null)
            {
                encoderElement.ReaderQuotas.MaxStringContentLength = (int)this._bindingElement.MaxReceivedMessageSize;
                MessageEncoderFactory encoderFactory = encoderElement.CreateMessageEncoderFactory();
                this._encoder = encoderFactory.Encoder;
            }

            this._consumer = null;
        }
Esempio n. 15
0
        private void Initialize()
        {
            this.mediaType   = "text/xml";
            this.contentType = string.Format(CultureInfo.InvariantCulture, "{0}; charset={1}", new object[]
            {
                this.mediaType,
                Encoding.UTF8.WebName
            });
            TextMessageEncodingBindingElement textMessageEncodingBindingElement = new TextMessageEncodingBindingElement(this.MessageVersion, Encoding.UTF8);
            MessageEncoderFactory             messageEncoderFactory             = textMessageEncodingBindingElement.CreateMessageEncoderFactory();

            this.textEncoder                    = messageEncoderFactory.Encoder;
            this.xmlSettings                    = new XmlWriterSettings();
            this.xmlSettings.Indent             = true;
            this.xmlSettings.IndentChars        = "  ";
            this.xmlSettings.OmitXmlDeclaration = false;
            this.xmlSettings.ConformanceLevel   = ConformanceLevel.Document;
            this.xmlSettings.Encoding           = LegacyMessageEncoder.utf8Encoding;
        }
Esempio n. 16
0
        private void InitializeEncoders(MessageVersion messageVersion, Encoding encoding)
        {
            // MTOM
            var mtomBindingElement = new MtomMessageEncodingBindingElement(messageVersion, encoding);
            var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();

            _mtomEncoder = mtomFactory.Encoder;

            // Text
            var textBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding);
            var textFactory        = textBindingElement.CreateMessageEncoderFactory();

            _textEncoder = textFactory.Encoder;

            // Binary
            //var binaryBindingElement = new BinaryMessageEncodingBindingElement(messageVersion, encoding);
            //var binaryFactory = binaryBindingElement.CreateMessageEncoderFactory();
            //_binaryEncoder = binaryFactory.Encoder;
        }
Esempio n. 17
0
        public static void InvalidCharToString()
        {
            string invalidSoap11Message = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<ServiceResponse xmlns=""http://tempuri.org/"">
<ServiceResult>string" + (char)0x0f + @"</ServiceResult>
</ServiceResponse>
</soap:Body>
</soap:Envelope>";
            var    textMessageEncodingBindingElement = new TextMessageEncodingBindingElement {
                MessageVersion = MessageVersion.Soap11
            };
            var factory        = textMessageEncodingBindingElement.CreateMessageEncoderFactory();
            var messageEncoder = factory.Encoder;
            var messageBytes   = Encoding.UTF8.GetBytes(invalidSoap11Message);
            var message        = messageEncoder.ReadMessage(new ArraySegment <byte>(messageBytes), BufferManager.CreateBufferManager(10, 10), "text/xml; charset=utf-8");
            var messageStr     = message.ToString();

            Assert.NotNull(messageStr);
            Assert.Contains("The byte 0x0F is not valid at this location", messageStr);
        }
Esempio n. 18
0
        private void InitializeEncoders(MessageVersion messageVersion, Encoding encoding)
        {
            // MTOM
            var mtomBindingElement = new MtomMessageEncodingBindingElement(messageVersion, encoding);
            var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();

            _mtomEncoder = mtomFactory.Encoder;

            // Text
            var textBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding);

            //textBindingElement.ReaderQuotas.MaxStringContentLength = 65535;
            //textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 65535;
            textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 1024 * 1024 * 16;

            var textFactory = textBindingElement.CreateMessageEncoderFactory();

            _textEncoder = textFactory.Encoder;

            // Binary
            //var binaryBindingElement = new BinaryMessageEncodingBindingElement(messageVersion, encoding);
            //var binaryFactory = binaryBindingElement.CreateMessageEncoderFactory();
            //_binaryEncoder = binaryFactory.Encoder;
        }
Esempio n. 19
0
 public override MessageEncoderFactory CreateMessageEncoderFactory()
 {
     return(new TimestampedMsgEncoderFactory(inner.CreateMessageEncoderFactory()));
 }
Esempio n. 20
0
        public SoapSerializer()
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);

            _encoderFactory = element.CreateMessageEncoderFactory();
        }
Esempio n. 21
0
        public SoapSerializer()
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);

            _encoderFactory = element.CreateMessageEncoderFactory();
        }
Esempio n. 22
0
        public static MessageEncoderFactory GetMessageEncoderFactory(MessageVersion messageVersion, Encoding writeEncoding)
        {
            TextMessageEncodingBindingElement bindingElement = new TextMessageEncodingBindingElement(messageVersion, writeEncoding);

            return(bindingElement.CreateMessageEncoderFactory());
        }
Esempio n. 23
0
        public static MessageEncoderFactory GetMessageEncoderFactory()
        {
            TextMessageEncodingBindingElement bindingElement = new TextMessageEncodingBindingElement();

            return(bindingElement.CreateMessageEncoderFactory());
        }