Class: Hobostove::Campfire

Inherits:
Object
  • Object
show all
Defined in:
lib/hobostove/campfire.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCampfire

Returns a new instance of Campfire.



5
6
7
8
9
# File 'lib/hobostove/campfire.rb', line 5

def initialize
  load_current_room

  @users = {}
end

Instance Attribute Details

#room_idObject (readonly)

Returns the value of attribute room_id.



3
4
5
# File 'lib/hobostove/campfire.rb', line 3

def room_id
  @room_id
end

Instance Method Details

#current_usersObject



39
40
41
42
43
44
45
# File 'lib/hobostove/campfire.rb', line 39

def current_users
  room = connection.get("/room/#{room_id}.json").body
  room = JSON.parse(room)["room"]
  room["users"].map do |user|
    @users[user["id"]] = Hobostove::Models::User.new(user["id"], user["name"])
  end
end

#joinObject



47
48
49
# File 'lib/hobostove/campfire.rb', line 47

def join
  connection.post("/room/#{room_id}/join.json")
end

#leaveObject



51
52
53
# File 'lib/hobostove/campfire.rb', line 51

def leave
  connection.post("/room/#{room_id}/leave.json")
end

#recent_messagesObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/hobostove/campfire.rb', line 11

def recent_messages
  messages = connection.get("/room/#{room_id}/recent.json?limit=10").body
  messages = JSON.parse(messages)["messages"]
  messages.map do |message|
    message = Hobostove::Models::Message.new(
      message["id"],
      Time.parse(message["created_at"]),
      message["type"],
      user(message["user_id"]),
      message["body"]
    )
    message = handle_upload(message) if message.type == "UploadMessage"
    message
  end
end

#send_message(message) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/hobostove/campfire.rb', line 27

def send_message(message)
  connection.post("/room/#{room_id}/speak.json") do |req|
    req.headers["Content-Type"] = "application/json"
    req.body = {
      :message => {
        :type => "TextMessage",
        :body => message,
      }
    }.to_json
  end
end