Class: Taxing::Rate
Constant Summary collapse
- STATES =
["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY"].freeze
Class Method Summary collapse
Class Method Details
.all(t = Time.now) ⇒ Object
10 11 12 13 14 |
# File 'lib/taxing/rate.rb', line 10 def self.all(t=Time.now) STATES.flat_map do |state_name| state(state_name, t) end end |
.state(state_name, t = Time.now) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/taxing/rate.rb', line 16 def self.state(state_name, t=Time.now) raise "invalid state" unless STATES.include?(state_name) raw = get("/TAXRATES_ZIP5_#{state_name}#{t.year}#{t.month}.csv").body skipped = false rates = [] CSV.parse(raw).each do |row| unless skipped skipped = true next end rates << { state: row[0], zip_code: row[1], tax_region_name: row[2], tax_region_code: row[3], combined_rate: row[4], state_rate: row[5], county_rate: row[6], city_rate: row[7], special_rate: row[8] } end rates end |