/// <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); }
/// <summary> /// This method is used to calculate the message size. /// </summary> /// <param name="message">Specify the request message.</param> /// <returns>Return the size of the request message.</returns> private int SizeOfWOPIMessage(Message message) { // Create an WOPI encoder WOPIMessageEncodingBindingElement element = new WOPIMessageEncodingBindingElement(); element.MessageVersion = message.Version; element.Encoding = this.context.GetValueOrDefault <string>("Encoding", "utf-8"); WOPIMessageEncoderFactory factory = (WOPIMessageEncoderFactory)element.CreateMessageEncoderFactory(); MessageEncoder encoder = factory.Encoder; // Write the message and return its length int size; using (MemoryStream stream = new MemoryStream()) { encoder.WriteMessage(message, stream); size = (int)stream.Length; } return(size); }