Sha256: d5b147b5e4c2d7b4e49328f2cce2c5bc3592b51ed579a51e94dd1805eda479bf
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true 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' 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
europe-0.0.14 | lib/europe/vat/rates.rb |