#! /usr/bin/env ruby
require 'twitter'
require 'cablegator'
require 'cablegator/twitter'

Twitter.command_line_login
tweeted = CableGator.save_file("~/.cablegator/tweeted_fmt_#{ARGV[0].to_s.gsub(/:| /,'')}")

puts "Tweeting cables" 
WikiLeaks.with_each_cable_data do |cable_data|
  reference_id = cable_data['reference_id']

  if tweeted.include?(reference_id)
    puts "Already tweeted #{reference_id}"
  else
    format_string = ARGV[0].to_s.dup
    cable_data.each { |k,v| format_string.gsub!(/\:#{k}/,v) }

    tweet = "#cablegate ##{reference_id} #{format_string}"
    
    puts "Tweeting: #{tweet}"
    begin 
      Twitter.update(tweet) 
      tweeted << reference_id
      delay = ARGV[1].to_i rescue nil
      sleep(delay || 10)
    rescue 
      "Tweet #{reference_id} failed"
    end
  end
end