public static void CallCustomHandlers(ISoapLoggerHandlerService service) { if (service == null) { throw new ArgumentNullException("service"); } if (_settings == null) { throw new InvalidOperationException("_settings is null"); } if (_requestBody == null) { service.CustomHandlersDisabled(_settings); return; } _service = service; try { _service.HandleRequestBody(_requestBody, _settings); } finally { _requestBody = null; _settings = null; } }
internal static void CallResponseCallback(byte[] responseBody, SoapLoggerSettings settings) { if (_requestBody != null) { //something went wrong, either pipeline execution didn't reach web-service method //or web-service method didn't call 'ReadRequestSetResponseCallback' //TODO determine case and log both files for first case var requestBody = _requestBody; _requestBody = null; SoapLoggerTools.WriteFileDefault(requestBody, true, settings.LogPath, false); SoapLoggerTools.WriteFileDefault(responseBody, false, settings.LogPath, false); //TODO add logging error message to file throw new LoggerException("something went wrong, either pipeline execution didn't reach web-service method or web-service method didn't execute 'SoapLoggerService.CallCustomHandlers'"); } try { _service.HandleResponseBodyCallback(responseBody, settings); } finally { _service = null; } }
internal static void CallCustomHandlersDisabledCallback(SoapLoggerSettings settings) { if (_client != null) { _client.CustomHandlersDisabledCallback(settings); } }
public LoggingEncoder(LoggingEncoderFactory factory) { _factory = factory; _innerEncoder = factory.InnerMessageFactory.Encoder; _contentType = factory.MediaType; _settings = factory.Settings; _handler = factory.Settings.IsService ? (HandlerAbstract) new HandlerService(factory.Settings) : new HandlerClient(factory.Settings); }
internal LoggingEncoderFactory(SoapLoggerSettings settings, string mediaType, MessageVersion version, MessageEncoderFactory messageFactory) { Settings = settings; MediaType = mediaType; InnerMessageFactory = messageFactory; _messageVersion = version; _encoder = new LoggingEncoder(this); }
public LoggingBindingElement(string logPath, string useCustomHandler) { this.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement(); this.InnerMessageEncodingBindingElement.MessageVersion = _messageVersion; this.Settings = new SoapLoggerSettings(); this.Settings.LogPath = logPath; this.Settings.UseCustomHandler = useCustomHandler.Equals(Boolean.TrueString, StringComparison.InvariantCultureIgnoreCase); }
internal static void CallRequestCallback(byte[] requestBody, SoapLoggerSettings settings) { if (Client == null) { string methodName = "SoapLoggerClient.SetCustomHandlerCallbacks"; throw new LoggerException("You have enabled 'useCustomHandler' for client class of given service. So method '" + methodName + "' should be called before making any request. Make sure to call it everywhere."); } Client.HandleRequestBodyCallback(requestBody, settings); }
internal LoggingEncoderFactory(SoapLoggerSettings settings, MessageEncoderFactory messageFactory) { // messageFactory is an instance of internal class 'TextMessageEncoderFactory' // encoder is an instance of internal class 'TextMessageEncoder' var encoder = messageFactory.Encoder; _messageVersion = messageFactory.MessageVersion; _encoder = new LoggingEncoder(encoder, settings); }
internal static void CallRequestCallback(byte[] requestBody, SoapLoggerSettings settings) { if (_client == null) { const string methodName = "SoapLoggerClient.SetCustomHandlerCallbacks"; throw new LoggerException("You have enabled 'useCustomHandler' for client class of given service. So method '" + methodName + "' should be called before each request (typically in constructor of inherited client class)."); } _client.HandleRequestBodyCallback(requestBody, settings); }
internal static void CallResponseCallback(byte[] responseBody, SoapLoggerSettings settings) { try { _client.HandleResponseBodyCallback(responseBody, settings); } finally { _client = null; } }
public LoggingBindingElement(string logPath, bool saveOriginalBinaryBody, bool useCustomHandler, System.ServiceModel.Channels.MessageVersion messageVersion) { var encoding = Encoding.UTF8; // we can set it via config if needed this.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding); this.Settings = new SoapLoggerSettings(); this.Settings.LogPath = logPath; this.Settings.SaveOriginalBinaryBody = saveOriginalBinaryBody; this.Settings.UseCustomHandler = useCustomHandler; }
public LoggingEncoder(MessageEncoder innerEncoder, SoapLoggerSettings settings) { _innerEncoder = innerEncoder; _settings = settings; if (_settings.UseCustomHandler) { _handler = new HandlerCustom.HandlerCustom(_settings); } else { _handler = new HandlerDefault(_settings); } }
public LoggingEncoder(LoggingEncoderFactory factory) { _factory = factory; _innerEncoder = factory.InnerMessageFactory.Encoder; _contentType = factory.MediaType; _settings = factory.Settings; if (factory.Settings.UseCustomHandler) { _handler = new HandlerCustom.HandlerCustom(_settings); } else { _handler = new HandlerDefault(_settings); } }
public HandlerCustom(SoapLoggerSettings settings) : base(settings) { }
public HandlerDefault(SoapLoggerSettings settings) { _settings = settings; }
private LoggingBindingElement(MessageEncodingBindingElement messageEncodingBinding, SoapLoggerSettings settings) { this.InnerMessageEncodingBindingElement = messageEncodingBinding; this.Settings = settings; }
public void HandleRequestBody(byte[] requestBody, SoapLoggerSettings settings) { SoapLoggerTools.WriteFileDefault(requestBody, true, settings.LogPath); }
public void HandleResponseBodyCallback(byte[] responseBody, SoapLoggerSettings settings) { SoapLoggerTools.WriteFileDefault(responseBody, false, settings.LogPath); }
internal static void SetSettings(SoapLoggerSettings settings) { _settings = settings; }
public void CustomHandlersDisabled(SoapLoggerSettings settings) { Console.WriteLine("CustomHandlersDisabled"); }
public void HandleResponseBodyCallback(byte[] responseBody, SoapLoggerSettings settings) { WriteFileCustom(responseBody, false, settings.LogPath); }
public void HandleRequestBody(byte[] requestBody, SoapLoggerSettings settings) { WriteFileCustom(requestBody, true, settings.LogPath); }