namespace :dune_balanced_bankaccount do

desc 'Update routing number table'
task :update_routing_numbers => :environment do
  puts 'Fetching file from: fededirectory.frb.org...'
  url = URI.parse('http://www.fedwiredirectory.frb.org/FedACHdir.txt');
  http = Net::HTTP.new(url.host, url.port);
  response = http.request(Net::HTTP::Get.new(url.request_uri));

  puts 'Creating temp file...'
  tmp_file = Tempfile.new("routing_numbers_#{DateTime.now.to_i}")
  tmp_file.write response.body
  tmp_file.rewind
  puts "temp file --> #{tmp_file.inspect}"

  tmp_file.each_line do |line|
    number = line[0..8]
    bank_name = line[35...71]
    puts "#{number} -- #{bank_name.strip}"

    resource = Dune::Balanced::Bankaccount::RoutingNumber.find_or_create_by(number: number)
    resource.bank_name = bank_name.strip
    resource.save
  end
  tmp_file.unlink
  puts 'Done!'
end

end