class Pictor::Client

Attributes

jid[RW]
key[RW]
nick[RW]
pass[RW]
room[RW]

Public Instance Methods

run() click to toggle source
# File lib/pictor/client.rb, line 16
def run
  setup @jid, @pass

  # Join the MUC Chat room after connecting.
  when_ready do
    puts "Connected!"
    p = Blather::Stanza::Presence.new
    p.from = @jid
    p.to = "#{@room}/#{@nick}"
    p << "<x xmlns='http://jabber.org/protocol/muc'/>"
    client.write p
  end

  message :groupchat?, :body => /^Pictor:/ do |m|
    puts "From: #{m.from}"
    rxp = Regexp.new('Pictor: (.*)', 'i').match(m.body)
    query = rxp[1].blank? ? 'unicorn' : rxp[1]
    puts "Searching: #{query}"
    http = EventMachine::HttpRequest.new('http://ajax.googleapis.com/ajax/services/search/images').get(:query => {'key' => @key, 'v' => '1.0', 'q' => query}, :timeout => 10)
    http.errback { puts 'Search Failed' }
    http.callback {
      r = Yajl::Parser.parse(http.response)
      srand
      url = r['responseData']['results'].sample['unescapedUrl'] + "#.png"
      puts "Returning: #{url}"
      m = Blather::Stanza::Message.new
      m.to = @room
      m.type = :groupchat
      m.body = url
      client.write m
    }
  end

  client.run
end