Skip to content

Instantly share code, notes, and snippets.

@bpo
Forked from macournoyer/lighter.rb
Created June 20, 2010 03:26
Show Gist options
  • Save bpo/445527 to your computer and use it in GitHub Desktop.
Save bpo/445527 to your computer and use it in GitHub Desktop.
# Lighter -- Campfire from the command line
# usage: ruby lighter.rb
require "rubygems"
require "tinder"
require "readline"
require "highline/import"
TOKEN="XXX"
SUBDOMAIN="XXX"
ROOM="XXX"
class Lighter
def initialize(room)
@room = room
@continue = true
@message_ids = []
@sleep = 1
end
def start
trap("INT") { input }
@room.join
puts "Now in room, CTRL+C to input, input /help for help"
process while @continue
end
def stop(leave=false)
@continue = false
@room.leave if leave
end
def input
print "\b\b"
cmd = Readline::readline("> ")
return if cmd.empty?
Readline::HISTORY.push(cmd)
if cmd[0] == ?/
case cmd
when "/exit"
stop
when "/leave"
stop(true)
when "/help"
puts "commands: exit, leave, help"
end
else
@room.speak cmd
end
end
private
def process
@room.listen(:token => TOKEN) do |message|
if message["type"] == "TextMessage"
puts "#{message["user"]["name"]}: #{message["body"]}"
end
end
puts "sleeping for #{@sleep}"
sleep @sleep
rescue Timeout::Error
puts "Timeout while listening: #{$!}, rejoining room ..."
@room.join(true)
rescue Exception
puts "Error while listening: #{$!}"
puts $@
end
end
subdomain, room = SUBDOMAIN, ROOM
campfire = Tinder::Campfire.new(subdomain, :ssl => true, :token => TOKEN)
room = campfire.find_room_by_name(room)
Lighter.new(room).start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment