hobostove 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hobostove/campfire.rb +96 -0
- data/lib/hobostove/message_renderer.rb +1 -1
- data/lib/hobostove/window.rb +11 -25
- data/lib/hobostove.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fb76c2892a743794debc51500b56ca9b8b222db
|
4
|
+
data.tar.gz: 12ea293f89da75edfde81e350355a760c544daa0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e37dafa2929d7ecc9e1c01543649e4a9f8739658e698311b35a6cf91c0f00402d69db36a371e8fbdb97667e7503a885d5e971a5c9331a794b2082271298a8114
|
7
|
+
data.tar.gz: 4d2e0255a4777d4793bd3518a7f2c697857d8957f221bd619eb4d78bf14bdabd9414214e70b3fa1167be9fcf28e56cff4ceb24d0605cb4f7c2e8080df3fdaf75
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module Hobostove
|
2
|
+
class Campfire
|
3
|
+
attr_reader :room_id
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
load_current_room
|
7
|
+
|
8
|
+
@users = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def recent_messages
|
12
|
+
messages = connection.get("/room/#{room_id}/recent.json?limit=10").body
|
13
|
+
messages = JSON.parse(messages)["messages"]
|
14
|
+
messages.map do |message|
|
15
|
+
message = Hobostove::Models::Message.new(
|
16
|
+
message["id"],
|
17
|
+
Time.parse(message["created_at"]),
|
18
|
+
message["type"],
|
19
|
+
user(message["user_id"]),
|
20
|
+
message["body"]
|
21
|
+
)
|
22
|
+
message = handle_upload(message) if message.type == "UploadMessage"
|
23
|
+
message
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def send_message(message)
|
28
|
+
connection.post("/room/#{room_id}/speak.json") do |req|
|
29
|
+
req.body = {
|
30
|
+
:message => {
|
31
|
+
:type => "TextMessage",
|
32
|
+
:body => message,
|
33
|
+
}
|
34
|
+
}.to_json
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def current_users
|
39
|
+
room = connection.get("/room/#{room_id}.json").body
|
40
|
+
room = JSON.parse(room)["room"]
|
41
|
+
room["users"].map do |user|
|
42
|
+
@users[user["id"]] = Hobostove::Models::User.new(user["id"], user["name"])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def join
|
47
|
+
connection.post("/room/#{room_id}/join.json")
|
48
|
+
end
|
49
|
+
|
50
|
+
def leave
|
51
|
+
connection.post("/room/#{room_id}/leave.json")
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def base_uri
|
57
|
+
"https://#{Configuration.subdomain}.campfirenow.com"
|
58
|
+
end
|
59
|
+
|
60
|
+
def connection
|
61
|
+
return @connection if @connection
|
62
|
+
@connection = Faraday.new(base_uri) do |faraday|
|
63
|
+
faraday.adapter *Faraday.default_adapter
|
64
|
+
end
|
65
|
+
@connection.basic_auth(Configuration.token, "x")
|
66
|
+
@connection
|
67
|
+
end
|
68
|
+
|
69
|
+
def load_current_room
|
70
|
+
rooms = connection.get("/rooms.json").body
|
71
|
+
rooms = JSON.parse(rooms)["rooms"]
|
72
|
+
@room_id = rooms.find do |room|
|
73
|
+
room["name"] == Configuration.room
|
74
|
+
end["id"]
|
75
|
+
end
|
76
|
+
|
77
|
+
def user(user_id)
|
78
|
+
return @users[user_id] if @users[user_id]
|
79
|
+
user = connection.get("/users/#{user_id}.json").body
|
80
|
+
user = JSON.parse(user)["user"]
|
81
|
+
@users[user_id] = Hobostove::Models::User.new(user_id, user["name"])
|
82
|
+
end
|
83
|
+
|
84
|
+
def handle_upload(message)
|
85
|
+
upload = connection.get("room/#{room_id}/messages/#{message.id}/upload.json").body
|
86
|
+
upload = JSON.parse(upload)["upload"]
|
87
|
+
Hobostove::Models::Message.new(
|
88
|
+
message.id,
|
89
|
+
message.timestamp,
|
90
|
+
message.type,
|
91
|
+
message.user,
|
92
|
+
upload["full_url"],
|
93
|
+
)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/lib/hobostove/window.rb
CHANGED
@@ -19,7 +19,7 @@ module Hobostove
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def main
|
22
|
-
|
22
|
+
campfire.join
|
23
23
|
|
24
24
|
while @running && (ch = Curses.getch)
|
25
25
|
Hobostove.logger.debug("#{ch} - #{ch.chr.inspect} pressed")
|
@@ -45,7 +45,7 @@ module Hobostove
|
|
45
45
|
@message_panel.update_cursor
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
campfire.leave
|
49
49
|
end
|
50
50
|
|
51
51
|
def speak
|
@@ -54,18 +54,17 @@ module Hobostove
|
|
54
54
|
return
|
55
55
|
end
|
56
56
|
|
57
|
-
|
57
|
+
campfire.send_message @current_message
|
58
58
|
@current_message = ""
|
59
59
|
end
|
60
60
|
|
61
61
|
def stream
|
62
62
|
Thread.new do
|
63
63
|
loop do
|
64
|
-
recent =
|
64
|
+
recent = campfire.recent_messages
|
65
65
|
recent.each do |message|
|
66
|
-
next if messages.include?(message
|
67
|
-
messages << message
|
68
|
-
|
66
|
+
next if messages.include?(message.id)
|
67
|
+
messages << message.id
|
69
68
|
handle_message(message)
|
70
69
|
end
|
71
70
|
|
@@ -78,7 +77,6 @@ module Hobostove
|
|
78
77
|
|
79
78
|
def handle_message(message)
|
80
79
|
Hobostove.logger.debug(message.inspect)
|
81
|
-
message = Models::Message.convert(message)
|
82
80
|
|
83
81
|
case message.type
|
84
82
|
when "TextMessage"
|
@@ -88,15 +86,7 @@ module Hobostove
|
|
88
86
|
when "LeaveMessage"
|
89
87
|
@users_panel.remove_user(message.user)
|
90
88
|
when "UploadMessage"
|
91
|
-
|
92
|
-
Hobostove.logger.debug(upload.inspect)
|
93
|
-
message = Models::Message.new(
|
94
|
-
message.id,
|
95
|
-
message.timestamp,
|
96
|
-
message.type,
|
97
|
-
message.user,
|
98
|
-
upload.upload.full_url
|
99
|
-
)
|
89
|
+
Notify.notify message.username, message.body
|
100
90
|
end
|
101
91
|
|
102
92
|
message_renderer.render_lines(message).each do |line|
|
@@ -106,15 +96,11 @@ module Hobostove
|
|
106
96
|
Hobostove.logger.fatal(e.inspect)
|
107
97
|
end
|
108
98
|
|
109
|
-
def room
|
110
|
-
@room ||= campfire.find_room_by_name(Configuration.room)
|
111
|
-
end
|
112
|
-
|
113
99
|
private
|
114
100
|
|
115
101
|
def message_renderer
|
116
102
|
@message_renderer ||=
|
117
|
-
MessageRenderer.new(
|
103
|
+
MessageRenderer.new(Curses.cols - 25)
|
118
104
|
end
|
119
105
|
|
120
106
|
def start_curses
|
@@ -138,15 +124,15 @@ module Hobostove
|
|
138
124
|
end
|
139
125
|
|
140
126
|
def load_users
|
141
|
-
|
127
|
+
campfire.current_users.each do |user|
|
142
128
|
Hobostove.logger.info user.name
|
143
|
-
@users_panel.add_user(
|
129
|
+
@users_panel.add_user(user, false)
|
144
130
|
end
|
145
131
|
@users_panel.refresh
|
146
132
|
end
|
147
133
|
|
148
134
|
def campfire
|
149
|
-
@campfire ||=
|
135
|
+
@campfire ||= Campfire.new
|
150
136
|
end
|
151
137
|
end
|
152
138
|
end
|
data/lib/hobostove.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobostove
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Oestrich
|
@@ -132,6 +132,7 @@ extra_rdoc_files: []
|
|
132
132
|
files:
|
133
133
|
- bin/hobostove
|
134
134
|
- lib/hobostove.rb
|
135
|
+
- lib/hobostove/campfire.rb
|
135
136
|
- lib/hobostove/cli/room_picker.rb
|
136
137
|
- lib/hobostove/cli/setup.rb
|
137
138
|
- lib/hobostove/cli/upgrade.rb
|