module VatidEu

Constants

BASE_URL
DEFAULT_TIMEOUT
VALID_COUNTRIES

Public Instance Methods

requester() click to toggle source
# File lib/vatid_eu.rb, line 17
def requester
  @@requester
end
requester=(data) click to toggle source
# File lib/vatid_eu.rb, line 14
def requester=(data)
  @@requester = data
end
timeout() click to toggle source
# File lib/vatid_eu.rb, line 25
def timeout
  @@timeout || DEFAULT_TIMEOUT
end
timeout=(new_timeout) click to toggle source
# File lib/vatid_eu.rb, line 22
def timeout=(new_timeout)
  @@timeout = new_timeout
end
valid?(country_or_id, id=nil) click to toggle source
# File lib/vatid_eu.rb, line 29
def valid?(country_or_id, id=nil)
  if id.nil?
    country = country_or_id[0..1].upcase
    id      = country_or_id[2..-1]
  else
    country = country_or_id.upcase
  end
  return false  unless VALID_COUNTRIES.include?(country)
  response = check(country, id)
  if response['error']
    raise response['error'].first['text'].first
  else
    if response['response'].first['valid'].first == 'true'
      if requester
        {
          :request_identifier => response['response'].first['request-identifier'].first,
          :request_date       => response['response'].first['request-date'].first
        }
      else
        true
      end
    else
      false
    end
  end
end

Private Instance Methods

check(country, id) click to toggle source
# File lib/vatid_eu.rb, line 60
def check(country, id)
  url = Addressable::URI.parse BASE_URL
  url.path += "#{country}/"
  url.path += "#{id}/"
  url.path += "#{requester[:country]}/#{requester[:id]}" if requester
  body = get_url(url)
  XmlSimple.xml_in(body, { 'KeepRoot' => true })
end
get_url(url) click to toggle source
# File lib/vatid_eu.rb, line 69
def get_url(url)
  http = Net::HTTP.new(url.host, 80)
  http.read_timeout = timeout
  response = http.get url.request_uri, 'User-agent' => 'vatid_eu ruby client'
  case response
  when Net::HTTPSuccess, Net::HTTPOK
    response.body
  else
    response.error!
  end
end