#!/usr/bin/ruby

$LOAD_PATH.unshift '../lib'
require 'optparse'
require 'uri'
require 'net/http'
require 'cgikit'

USAGE = "Usage: cksweep uri [password]"
SWEEP = '__sweep_sessions'
KEY = 'd'

def show_usage
  puts USAGE
  exit
end

key = KEY
opt = OptionParser.new
opt.on("-d [key]", "DirectAction request handler key") do |v| key = v end

begin
  opt.parse!(ARGV)
rescue
  show_usage
end

show_usage if ARGV.empty?
uri = ARGV.shift
pass = ARGV.shift

uri.gsub!(/\/\Z/, '')
uri = "http://#{uri}" unless /\Ahttp:\/\// === uri
uri = "#{uri}/#{KEY}/#{SWEEP}"
uri = URI.parse(uri)

Net::HTTP.version_1_2 
Net::HTTP.start(uri.host, uri.port) do |http|
  response = http.get(uri.path)
  unless CGIKit::DirectAction.sweep_page?(response.body) then
    puts "cksweep: #{uri.to_s}: not sweep page"
    exit 1
  end
end

unless pass then
  system 'stty -echo'
  print "Password: "
  pass = gets.chomp
  system 'stty echo'
  puts
end

Net::HTTP.start(uri.host, uri.port) do |http|
  response = http.post(uri.path,
                       "#{CGIKit::DirectAction::SWEEP_PASS_KEY}=#{pass}")
  successed, failed = CGIKit::DirectAction.sweep_info(response.body)
  puts "Deleted: #{successed}"
  puts "Failed:  #{failed}"
end
