using System; using System.IO; using System.Text; namespace Hcs.ClientApi { /// /// Реализация захвата содержимого отправляемых и принимаемых SOAP сообщений, /// которая хранит данные в памяти /// public class HcsMemoryMessageCapture : IHcsMessageCapture { private MemoryStream messageCaptureStream; private StreamWriter messageCaptureWriter; private Encoding encoding => Encoding.UTF8; public HcsMemoryMessageCapture() { messageCaptureStream = new MemoryStream(); messageCaptureWriter = new StreamWriter(messageCaptureStream, encoding); } void IHcsMessageCapture.CaptureMessage(bool sentOrReceived, string messageBody) { if (messageCaptureStream.Position > 0) messageCaptureWriter.WriteLine(""); messageCaptureWriter.Write(""); messageCaptureWriter.Write(messageBody); messageCaptureWriter.Flush(); } public byte[] GetData() { var buf = messageCaptureStream.GetBuffer(); int size = (int)messageCaptureStream.Length; var data = new byte[size]; Buffer.BlockCopy(buf, 0, data, 0, size); return data; } public override string ToString() { return encoding.GetString(GetData()); } } }