Sha256: 49f241ba242e75107d4e2e50ba75e1ac4e26dedfe6605d0465e1bce50cd699e4

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true
require "savon/log_message"

module Savon
  class RequestLogger

    def initialize(globals)
      @globals = globals
    end

    def log(request, &http_request)
      log_request(request) if log?
      response = http_request.call
      log_response(response) if log?

      response
    end

    def logger
      @globals[:logger]
    end

    def log?
      @globals[:log]
    end

    def log_headers?
      @globals[:log_headers]
    end

    private

    def log_request(request)
      logger.info  { "SOAP request: #{request.url}" }
      logger.info  { headers_to_log(request.headers) } if log_headers?
      logger.debug { body_to_log(request.body) }
    end

    def log_response(response)
      logger.info  { "SOAP response (status #{response.code})" }
      logger.debug { headers_to_log(response.headers) } if log_headers?
      logger.debug { body_to_log(response.body) }
    end

    def headers_to_log(headers)
      headers.map { |key, value| "#{key}: #{value}" }.join("\n")
    end

    def body_to_log(body)
      LogMessage.new(body, @globals[:filters], @globals[:pretty_print_xml]).to_s
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
savon-2.15.1 lib/savon/request_logger.rb
savon-2.15.0 lib/savon/request_logger.rb
savon-2.14.0 lib/savon/request_logger.rb
savon-2.13.1 lib/savon/request_logger.rb
savon-2.13.0 lib/savon/request_logger.rb