Class: MastercardCoreSdk::Converters::SDKConverterFactory

Inherits:
Object
  • Object
show all
Extended by:
Exceptions
Defined in:
lib/mastercard_core_sdk/converters/sdk_converter_factory.rb

Overview

Decides converter as per content-type of request/response.

Constant Summary collapse

@@logger =
Logging.logger[self]
@@content_handlers =
{}

Class Method Summary collapse

Class Method Details

.get_converter(mime) ⇒ Hash

Get converter as per mime-type.

Parameters:

  • mime

    String specifying content-type for request.

Returns:

  • (Hash)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 18

def get_converter(mime)
  converter = nil
  content_type = get_mime_sub_type(mime)
  if content_type
    return @@content_handlers[content_type] if @@content_handlers.key?(content_type)
    if content_type.include?(CONTENT_TYPE_XML)
      converter = XmlConverter.new
    elsif content_type.include?(CONTENT_TYPE_JSON)
      converter = JsonConverter.new
    elsif content_type.include?(CONTENT_TYPE_URL_ENCODED)
      converter = EncodedURLConverter.new
    else
      @@logger.debug "#{ERR_MSG_CONTENT_TYPE} #{content_type}"
      raise SDKConversionError.new(:error_message => "#{ERR_MSG_CONTENT_TYPE} #{content_type}", :source => self.class)
    end
    set_converter(content_type, converter)
    return converter
  end
end

.get_mime_sub_type(mime) ⇒ String

Return sub-type for the mime.

Parameters:

  • mime

    String specifying mime-type.

Returns:

  • (String)


52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 52

def get_mime_sub_type(mime)
  mime_sub_type = ""
  if json_mime?(mime)
    mime_sub_type = CONTENT_TYPE_JSON 
  elsif xml_mime?(mime)
    mime_sub_type = CONTENT_TYPE_XML
  elsif urlencoded_mime?(mime)
    mime_sub_type = CONTENT_TYPE_URL_ENCODED
  else
    @@logger.debug "#{ERR_MSG_CONTENT_TYPE} #{mime}"
    raise SDKConversionError.new(:error_message => "#{ERR_MSG_CONTENT_TYPE} #{mime}", :source => self.class)
  end
  return mime_sub_type
end

.json_mime?(mime) ⇒ Boolean

Check if the given MIME is a JSON mime.

Parameters:

  • mime

    String specifying mime-type.

Returns:

  • (Boolean)


70
71
72
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 70

def json_mime?(mime)
  !!(mime =~ /(json|javascript)/i)
end

.set_converter(content_type, converter) ⇒ Object

Set the converter as per content-type.

Parameters:

  • content_type

    Content-Type for request.

  • converter

    specifies appropriate converter for the content-type.



41
42
43
44
45
46
47
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 41

def set_converter(content_type, converter)
  if @@content_handlers.key?(content_type)
    @@content_handlers[content_type] = converter
  else
    @@content_handlers.merge!({content_type => converter})
  end
end

.urlencoded_mime?(mime) ⇒ Boolean

Check if the given MIME is a WWW-FORM-URLENCODED mime.

Parameters:

  • mime

    String specifying mime-type.

Returns:

  • (Boolean)


84
85
86
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 84

def urlencoded_mime?(mime)
  !!(mime =~ /www-form-urlencoded/i)
end

.xml_mime?(mime) ⇒ Boolean

Check if the given MIME is a XML mime.

Parameters:

  • mime

    String specifying mime-type.

Returns:

  • (Boolean)


77
78
79
# File 'lib/mastercard_core_sdk/converters/sdk_converter_factory.rb', line 77

def xml_mime?(mime)
  !!(mime =~ /xml/i)
end