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); }
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); }
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)); }
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; }
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); }
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"); }
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; }
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); }
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; }
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; }
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; }
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); }
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; }
public override MessageEncoderFactory CreateMessageEncoderFactory() { return(new TimestampedMsgEncoderFactory(inner.CreateMessageEncoderFactory())); }
public SoapSerializer() { TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8); _encoderFactory = element.CreateMessageEncoderFactory(); }
public static MessageEncoderFactory GetMessageEncoderFactory(MessageVersion messageVersion, Encoding writeEncoding) { TextMessageEncodingBindingElement bindingElement = new TextMessageEncodingBindingElement(messageVersion, writeEncoding); return(bindingElement.CreateMessageEncoderFactory()); }
public static MessageEncoderFactory GetMessageEncoderFactory() { TextMessageEncodingBindingElement bindingElement = new TextMessageEncodingBindingElement(); return(bindingElement.CreateMessageEncoderFactory()); }