Class: TChatter::Chat

Inherits:
Object
  • Object
show all
Defined in:
lib/t_chatter/chat.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(username, config_class) ⇒ Chat

attr_accessor :url



6
7
8
9
10
11
12
13
14
15
16
# 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

Instance Attribute Details

#all_usersObject (readonly)

Returns the value of attribute all_users.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def all_users
  @all_users
end

#configObject (readonly)

Returns the value of attribute config.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def config
  @config
end

#connectionObject (readonly)

Returns the value of attribute connection.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def connection
  @connection
end

#last_message_idObject (readonly)

Returns the value of attribute last_message_id.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def last_message_id
  @last_message_id
end

#messagesObject (readonly)

Returns the value of attribute messages.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def messages
  @messages
end

#responseObject (readonly)

Returns the value of attribute response.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def response
  @response
end

#urlObject (readonly)

Returns the value of attribute url.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def url
  @url
end

#userObject (readonly)

Returns the value of attribute user.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def user
  @user
end

#user_idObject (readonly)

Returns the value of attribute user_id.



3
4
5
# File 'lib/t_chatter/chat.rb', line 3

def user_id
  @user_id
end

Instance Method Details

#connectObject



41
42
43
# File 'lib/t_chatter/chat.rb', line 41

def connect
  @connection = Faraday::Connection.new(@url)
end

#each_userObject



79
80
81
# File 'lib/t_chatter/chat.rb', line 79

def each_user
  @all_users.map{ |y| y['name'] }.join(', ')
end

#get_subscribed_usersObject



73
74
75
76
77
# 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

#quitObject



87
88
89
# File 'lib/t_chatter/chat.rb', line 87

def quit
  connection.get('/quit', {user_id: user_id})
end

#receive_messageObject



53
54
55
56
57
58
59
60
61
62
63
64
65
# 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) ⇒ Object



45
46
47
48
49
50
51
# 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_urlObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# 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_usersObject



83
84
85
# 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_userObject



18
19
20
# File 'lib/t_chatter/chat.rb', line 18

def subscribe_user
  connection.post('/new_user', {user_id: user_id , user: user})
end

#unknown_urlObject



36
37
38
# 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) ⇒ Object



67
68
69
70
71
# File 'lib/t_chatter/chat.rb', line 67

def update_messages(message)
  message = message.split("\n")
  @last_message = message.last
  @messages += message
end