Class: Worldline::Acquiring::SDK::Logging::LogMessageBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/worldline/acquiring/sdk/logging/log_message_builder.rb

Overview

Abstract class used to construct a message describing a request or response.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_id, body_obfuscator = Obfuscation::BodyObfuscator.default_obfuscator, header_obfuscator = Obfuscation::HeaderObfuscator.default_obfuscator) ⇒ LogMessageBuilder

Create a new LogMessageBuilder

Raises:

  • (ArgumentError)


26
27
28
29
30
31
32
33
34
35
36
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 26

def initialize(request_id,
               body_obfuscator = Obfuscation::BodyObfuscator.default_obfuscator,
               header_obfuscator = Obfuscation::HeaderObfuscator.default_obfuscator)
  raise ArgumentError if request_id.nil? or request_id.empty?
  raise ArgumentError if body_obfuscator.nil?
  raise ArgumentError if header_obfuscator.nil?
  @request_id = request_id
  @headers = ''
  @body_obfuscator = body_obfuscator
  @header_obfuscator = header_obfuscator
end

Instance Attribute Details

#bodyString (readonly)

Request or response body as a string

Returns:

  • (String)

    the current value of body



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def body
  @body
end

#body_obfuscatorWorldline::Acquiring::SDK::Logging::Obfuscation::BodyObfuscator (readonly)

Returns the current value of body_obfuscator.

Returns:



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def body_obfuscator
  @body_obfuscator
end

#content_typeString (readonly)

Content type of the body, generally ‘application/json’ or ‘text/html’

Returns:

  • (String)

    the current value of content_type



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def content_type
  @content_type
end

#header_obfuscatorWorldline::Acquiring::SDK::Logging::Obfuscation::HeaderObfuscator (readonly)

Returns the current value of header_obfuscator.

Returns:



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def header_obfuscator
  @header_obfuscator
end

#headersString (readonly)

Request or response headers in string form

Returns:

  • (String)

    the current value of headers



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def headers
  @headers
end

#request_idString (readonly)

An identifier assigned to the request and response

Returns:

  • (String)

    the current value of request_id



16
17
18
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 16

def request_id
  @request_id
end

Instance Method Details

#add_headers(name, value) ⇒ Object

Adds a single header to the #headers string



39
40
41
42
43
44
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 39

def add_headers(name, value)
  @headers += ', ' if @headers.length > 0
  @headers += name + '="'
  @headers += @header_obfuscator.obfuscate_header(name, value) unless value.nil?
  @headers += '"'
end

#get_messageString

Constructs and returns the log message as a string.

Returns:

  • (String)

Raises:

  • (NotImplementedError)


61
62
63
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 61

def get_message
  raise NotImplementedError.new("#{self.class.name}#get_message() is not implemented.")
end

#is_binary(content_type) ⇒ Object

Returns whether or not the content type is binary



79
80
81
82
83
84
85
86
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 79

def is_binary(content_type)
  if content_type.nil?
    false
  else
    content_type = content_type.downcase
    !(content_type.start_with?("text/") || content_type.include?("json") || content_type.include?("xml"))
  end
end

#set_body(body, content_type) ⇒ Object

Parameters:

  • body (String)

    the message body

  • content_type (String)

    the content type of the body



50
51
52
53
54
55
56
57
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 50

def set_body(body, content_type)
  if is_binary(content_type)
    @body = "<binary content>"
  else
    @body = @body_obfuscator.obfuscate_body(body)
  end
  @content_type = content_type
end

#to_sObject



65
66
67
68
69
70
71
# File 'lib/worldline/acquiring/sdk/logging/log_message_builder.rb', line 65

def to_s
  if self.class == LogMessageBuilder
    super.to_s
  else
    get_message
  end
end