Sha256: e343fbfede6678c33f2c9fde7b8a86db023adaa2f6cafe305e2e1b4199e984a3

Contents?: true

Size: 982 Bytes

Versions: 9

Compression:

Stored size: 982 Bytes

Contents

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

    private

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

    def log_response(response)
      logger.info  { "SOAP response (status #{response.code})" }
      logger.debug { body_to_log(response.body) }
    end

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

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

  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
savon-2.12.1 lib/savon/request_logger.rb
savon-2.12.0 lib/savon/request_logger.rb
savon-2.11.2 lib/savon/request_logger.rb
savon-SU-2.11.1b lib/savon/request_logger.rb
savon-SU-2.11.1 lib/savon/request_logger.rb
savon-2.11.1 lib/savon/request_logger.rb
savon-2.11.0 lib/savon/request_logger.rb
savon-2.10.1 lib/savon/request_logger.rb
savon-2.10.0 lib/savon/request_logger.rb