Class: MastercardCoreSdk::Core::RequestResponseLogger

Inherits:
Object
  • Object
show all
Includes:
Exceptions
Defined in:
lib/mastercard_core_sdk/core/request_response_logger.rb

Overview

Logs the request and response content.

Constant Summary collapse

NEWLINE =
"\n"
@@logger =
Logging.logger[self]

Class Method Summary collapse

Class Method Details

.log_request(request) ⇒ Object

Log the request content.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mastercard_core_sdk/core/request_response_logger.rb', line 17

def self.log_request(request)
  if request

    log_str = LOG_REQUEST_INFORMATION
    request_api_info = NEWLINE + LOG_REQUEST + request.options[:method].to_s.upcase + HYPHEN + request.base_url + NEWLINE
    log_str += request_api_info

    headers = request.options[:headers]
    body = request.options[:body]

    if headers && headers.size > 0
      headers.each do |param,value|
        log_str += NEWLINE + param.to_s + COLON + value.to_s
      end
    end

    if body
      log_str += NEWLINE + body.to_s
    end
    log_str += NEWLINE

    @@logger.info request_api_info
    @@logger.debug log_str
  else
    @@logger.error ERR_MSG_NULL_REQUEST
    raise SDKValidationError.new(ERR_MSG_NULL_REQUEST)
  end
end

.log_response(response) ⇒ Object

Log the response content.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/mastercard_core_sdk/core/request_response_logger.rb', line 48

def self.log_response(response)
  if response

    log_str = NEWLINE + LOG_RESPONSE_INFORMATION

    response_api_info = NEWLINE + LOG_RESPONSE + response.return_message + HYPHEN + response.return_code.to_s.upcase + HYPHEN + response.code.to_s.upcase
    response_uri_info = NEWLINE + LOG_URI + HYPHEN + response.options[:effective_url]

    log_str += response_api_info + response_uri_info
    headers = response.headers

    if headers && headers.size > 0
      headers.each do |param, value|
        if value.is_a?(Array)
          value.each do |v|
            log_str += NEWLINE + param + COLON + v
          end
        else
          log_str += NEWLINE + param + COLON + value
        end
      end
    end

    if response.response_body
      response_body = response.response_body
      xml_mime = !!(response.headers['Content-Type'] =~ /xml/i)
      json_mime = !!(response.headers['Content-Type'] =~ /json/i)
      
      if json_mime 
         if response_body.include?("accountNumber")
           response_hash = JSON.parse(response_body)
           response_body = mask_json_data(response_hash).to_json
         end
        
      elsif xml_mime
        if response_body.include?("AccountNumber")
          xml_doc = Nokogiri::XML(response_body)
          response_body = mask_xml_data(xml_doc).serialize(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XML).sub("\n","").strip
        end
      end
      
      log_str += NEWLINE + response_body.to_s
    end
    log_str += NEWLINE

  @@logger.info response_api_info
  @@logger.debug log_str
  else
    @@logger.error ERR_MSG_NULL_RESPONSE
    raise SDKValidationError.new(ERR_MSG_NULL_RESPONSE)
  end
end