module RmsApi::Helper

Constants

ENDPOINT_BASE

Public Instance Methods

connection(service:, method:) click to toggle source
# File lib/rms_api/helper.rb, line 5
def connection(service:, method:)
  Faraday.new(url: ENDPOINT_BASE + "#{service}/#{method}") do |conn|
    conn.adapter(Faraday.default_adapter)
    conn.headers['Authorization'] = encoded_key
  end
end
convert_xml_into_json(xml) click to toggle source
# File lib/rms_api/helper.rb, line 12
def convert_xml_into_json(xml)
  Hash.from_xml(xml)
end
handler(response) click to toggle source
# File lib/rms_api/helper.rb, line 16
def handler(response)
  rexml = REXML::Document.new(response.body)
  define_singleton_method(:all) { convert_xml_into_json(response.body) }
  check_system_status(rexml)
  status_parser(response_code: get_response_code(rexml), error_messages: get_error_messages(rexml))
  get_response_parser(rexml) if response.env.method == :get
  self
end

Private Instance Methods

check_system_status(rexml) click to toggle source
# File lib/rms_api/helper.rb, line 44
def check_system_status(rexml)
  systemStatus = rexml.elements['result/status/systemStatus'].text
  raise rexml.elements['result/status/message'].text if systemStatus == 'NG'
end
define_element_method(el) click to toggle source
# File lib/rms_api/helper.rb, line 92
def define_element_method(el)
  define_singleton_method(el.name.underscore) do
    if el.has_elements?
      Hash.from_xml(el.to_s)
    else
      el.text.try!(:force_encoding, 'utf-8')
    end
  end
end
encoded_key() click to toggle source
# File lib/rms_api/helper.rb, line 27
def encoded_key
  if service_secret.blank? && license_key.blank?
    error_msg = 'serviceSecret and licenseKey are required'
    raise StandardError, error_msg
  else
    'ESA ' + Base64.strict_encode64(service_secret + ':' + license_key)
  end
end
get_endpoint(rexml) click to toggle source
# File lib/rms_api/helper.rb, line 64
def get_endpoint(rexml)
  result = {}
  interfaceId = rexml.elements['result/status/interfaceId'].text
  result[:api] = interfaceId.split('.')[0]
  result[:method] = interfaceId.split('.')[1]
  result[:camel] = "#{result[:api]}#{result[:method].capitalize}"
  result
end
get_error_messages(rexml) click to toggle source
# File lib/rms_api/helper.rb, line 54
def get_error_messages(rexml)
  endpoint = get_endpoint(rexml)[:camel]
  err_point = "result/#{endpoint}Result/errorMessages/errorMessage/msg"
  result = []
  rexml.elements.each(err_point) do |element|
    result << element.text
  end
  result
end
get_response_code(rexml) click to toggle source
# File lib/rms_api/helper.rb, line 49
def get_response_code(rexml)
  endpoint = get_endpoint(rexml)[:camel]
  rexml.elements["result/#{endpoint}Result/code"].text
end
get_response_parser(rexml) click to toggle source
# File lib/rms_api/helper.rb, line 80
def get_response_parser(rexml)
  xpoint = "result/#{get_endpoint(rexml)[:camel]}Result/item"
  rexml.elements.each(xpoint) do |result|
    result.children.each do |el|
      next if el.to_s.strip.blank?

      define_element_method(el)
    end
  end
  self
end
license_key() click to toggle source
# File lib/rms_api/helper.rb, line 40
def license_key
  RmsApi.configuration.license_key
end
post_response_parser(_rexml) click to toggle source
# File lib/rms_api/helper.rb, line 102
def post_response_parser(_rexml)
  self
end
service_secret() click to toggle source
# File lib/rms_api/helper.rb, line 36
def service_secret
  RmsApi.configuration.service_secret
end
status_parser(response_code:, error_messages:) click to toggle source
# File lib/rms_api/helper.rb, line 73
def status_parser(response_code:, error_messages:)
  response_codes = YAML.load_file("#{File.dirname(__FILE__)}/../../config/response_codes.yml")
  define_singleton_method(:is_success?) { response_code == 'N000' }
  define_singleton_method(:message) { response_codes[response_code] }
  define_singleton_method(:errors) { error_messages }
end