namespace :floodgate do

desc 'Display the floodgate status'
task :status => :environment do
  status = Floodgate::Client.status

  status.each_pair do |key, value|
    puts "#{key}: #{value}"
  end
end

desc 'Close the floodgate'
task :close => :environment do
  Floodgate::Client.close
end

desc 'Open the floodgate'
task :open => :environment do
  Floodgate::Client.open
end

desc 'Set the URL floodgate redirects to when filtering traffic'
task :set_redirect_url => :environment do
  redirect_url = ENV['redirect_url']

  Floodgate::Client.set_redirect_url(redirect_url)
end

namespace :ip_address do
  desc 'Display a list of allowed IP Addresses'
  task :all => :environment do
    puts Floodgate::Client.allowed_ip_addresses
  end

  desc 'Show my IP Address'
  task :me do
    puts Floodgate::Client.my_ip_address
  end

  desc 'Add an IP Address to allow through the floodgate'
  task :add => :environment do
    ip_address = ENV['ip_address']

    Floodgate::Client.add_ip_address(ip_address)
  end

  desc 'Add my IP Address to the list allowed through the floodgate'
  task :add_me => :environment do
    Floodgate::Client.add_my_ip_address
  end

  desc 'Remove an IP Address from the list allowed through the floodgate'
  task :remove => :environment do
    ip_address = ENV['ip_address']

    Floodgate::Client.remove_ip_address(ip_address)
  end

  desc 'Remove my IP Address from the list allowed through the floodgate'
  task :remove_me => :environment do
    Floodgate::Client.remove_my_ip_address
  end

end

end