class TChatter::Chat

Attributes

all_users[R]
config[R]
connection[R]
last_message_id[R]
messages[R]
response[R]
url[R]
user[R]
user_id[R]

Public Class Methods

new(username, config_class) click to toggle source

attr_accessor :url

# File lib/t_chatter/chat.rb, line 6
def initialize(username, config_class)
  @user = username
  @messages = []
  @last_message_id = 0
  @all_users = []
  @config = config_class.configuration
  @user_id = config[:user_id] || UNIQUE_ID
  set_url
  connect
  subscribe_user
end

Public Instance Methods

connect() click to toggle source
# File lib/t_chatter/chat.rb, line 41
def connect
  @connection = Faraday::Connection.new(@url)
end
each_user() click to toggle source
# File lib/t_chatter/chat.rb, line 79
def each_user
  @all_users.map{ |y| y['name'] }.join(', ')
end
get_subscribed_users() click to toggle source
# File lib/t_chatter/chat.rb, line 73
def get_subscribed_users
  response = connection.get('/all_users')
  response = JSON.parse(response.body)
  @all_users = response["users"]
end
quit() click to toggle source
# File lib/t_chatter/chat.rb, line 87
def quit
  connection.get('/quit', {user_id: user_id})
end
receive_message() click to toggle source
# File lib/t_chatter/chat.rb, line 53
def receive_message
  sleep 2
  response = connection.get('/receive', { last_message_id: @last_message_id })
  @response = JSON.parse(response.body)
  last_id = @response["last_message_id"]
  unless last_id == last_message_id
    message = @response["message"]
    puts message
    @last_message_id = last_id
    update_messages(message) unless message.blank?
  end
  get_subscribed_users if all_users.size < @response["total_users"].to_i
end
send_message(message) click to toggle source
# File lib/t_chatter/chat.rb, line 45
def send_message(message)
  response = connection.post('/send', {message: message, user: user})
  @response = JSON.parse(response.body)
  @last_message_id = @response["last_message_id"]
  @messages << message
  @last_message = message
end
set_url() click to toggle source
# File lib/t_chatter/chat.rb, line 22
    def set_url
      begin
        @url = URI.parse(@config[:host])
      rescue URI::InvalidURIError
        puts <<-EOS
        You dont seem to have a valid URL in your .chatter.yml file\n
        You may run ``setup_t_chatter`` to set a default url which will be
        used everytime you try to connect. However you are now being connected
        to the global chatter stream
        EOS
        @url = URI.parse(DEFAULT_URL)
      end
    end
show_all_users() click to toggle source
# File lib/t_chatter/chat.rb, line 83
def show_all_users
  puts @all_users.map{ |y| "#{y['name']} joined at #{y['joined']}"}.join("\n")
end
subscribe_user() click to toggle source
# File lib/t_chatter/chat.rb, line 18
def subscribe_user
  connection.post('/new_user', {user_id: user_id , user: user})
end
unknown_url() click to toggle source
# File lib/t_chatter/chat.rb, line 36
def unknown_url
  puts "The URL doesn't appear to be valid a URL"
end
update_messages(message) click to toggle source
# File lib/t_chatter/chat.rb, line 67
def update_messages(message)
  message = message.split("\n")
  @last_message = message.last
  @messages += message
end