Sha256: 986a79987302240ef35294479cd3981773c5eb524fee299cf5bcd2df9b3a6329
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
require 'rexml/document' module Europe module Vat # Rates module Rates RATES_URL = 'https://europa.eu/youreurope/business/taxation/' \ 'vat/vat-rules-rates/index_en.htm'.freeze def self.retrieve resp = fetch_rates return resp if resp == :failed extract_rates(resp) end def self.extract_rates(resp) rates = {} data = resp.scan(%r{\<tbody\>(.*)\<\/tbody\>}m).first.first.strip xml = REXML::Document.new("<root>#{data}</root>") xml.first.elements.each('tr') do |result| next if result[3].nil? rates = filter_rate(result, rates) end rates end def self.filter_rate(result, rates) country = result[3].text rate = result[5].text rates[country.to_sym] = rate.to_f if country rates end def self.fetch_rates resp = Net::HTTP.get_response(URI.parse(RATES_URL)) resp.code.to_i == 200 ? resp.body : :failed end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
europe-0.0.12 | lib/europe/vat/rates.rb |
europe-0.0.11 | lib/europe/vat/rates.rb |