class Valvat::Lookup::VIES

Constants

BODY
BODY_TEMPLATE
ENDPOINT_URI
FAULTS
HEADERS

Private Instance Methods

build_fault(hash) click to toggle source
# File lib/valvat/lookup/vies.rb, line 91
def build_fault(hash)
  fault = hash[:faultstring]
  return hash.merge({ valid: false }) if fault == 'INVALID_INPUT'

  hash.merge({ error: (FAULTS[fault] || UnknownLookupError).new(fault, self.class) })
end
build_request(uri) click to toggle source
# File lib/valvat/lookup/vies.rb, line 44
def build_request(uri)
  request = Net::HTTP::Post.new(uri.request_uri, HEADERS)
  request.body = BODY_TEMPLATE.result(binding)
  request
end
convert_key(key) click to toggle source
# File lib/valvat/lookup/vies.rb, line 58
def convert_key(key)
  key.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
     .gsub(/([a-z\d])([A-Z])/, '\1_\2')
     .tr('-', '_')
     .sub(/\Atrader_/, '')
     .downcase.to_sym
end
convert_value(value) click to toggle source
# File lib/valvat/lookup/vies.rb, line 66
def convert_value(value)
  value == '---' ? nil : value
end
convert_values(hash) click to toggle source
# File lib/valvat/lookup/vies.rb, line 70
def convert_values(hash)
  return build_fault(hash) if hash[:faultstring]

  hash[:valid] = hash[:valid] == 'true' || (hash[:valid] == 'false' ? false : nil) if hash.key?(:valid)
  hash[:request_date] = Date.parse(hash[:request_date]) if hash.key?(:request_date)
  hash
end
endpoint_uri() click to toggle source
# File lib/valvat/lookup/vies.rb, line 40
def endpoint_uri
  ENDPOINT_URI
end
parse(body) click to toggle source
# File lib/valvat/lookup/vies.rb, line 50
def parse(body)
  doc = REXML::Document.new(body)
  elements = doc.get_elements('/env:Envelope/env:Body').first.first
  convert_values(elements.each_with_object({}) do |el, hash|
    hash[convert_key(el.name)] = convert_value(el.text)
  end)
end