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