slack-keep-presence 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +4 -0
- data/lib/slack_keep_presence.rb +28 -5
- data/lib/slack_keep_presence/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c4ab0e6c0b9901160b3bea4d6bd7977e7c98acde52a9f0b6b7bb87631ae81cc
|
4
|
+
data.tar.gz: dd4057a7d4afc1fd0a4bcb973b2c2699227cd6296d198cea98d74e8b4cef3f60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 650673b0c2a572ce6bc58539b437ec98b0417cb45ca58aa028c40b52d013c7cccbdc13e78ecef3d38a86fe94b2342457436ccbb63998df79633e62c28d69e242
|
7
|
+
data.tar.gz: a0e699e2029387f6d2adc5f50ac24aed3d754d22cb2aae14c5b005130d518d117e10e417659eb3aea8166051929750961518b1c9382f0b7b2efdafc45c6c02c1
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,10 @@ Marks a slack user as active when auto-away kicks in. Useful for keeping slack b
|
|
4
4
|
|
5
5
|
Inspired by [slack-keep-presence](https://github.com/eskerda/slack-keep-presence). This is basically a ruby port with only the presence functionality retained.
|
6
6
|
|
7
|
+
## Features
|
8
|
+
- Uses websockets to connect to Slack's real time api to track presence
|
9
|
+
- Automatically reconnects if the connection drops and comes back
|
10
|
+
|
7
11
|
## Installation
|
8
12
|
|
9
13
|
```
|
data/lib/slack_keep_presence.rb
CHANGED
@@ -43,6 +43,19 @@ module SlackKeepPresence
|
|
43
43
|
|
44
44
|
EM.run do
|
45
45
|
start_realtime
|
46
|
+
|
47
|
+
EM.add_periodic_timer(5) do
|
48
|
+
next unless ws
|
49
|
+
|
50
|
+
timeouter = EventMachine::Timer.new(2) do
|
51
|
+
logger.info('Connection to Slack terminated, reconnecting...')
|
52
|
+
restart_connection
|
53
|
+
end
|
54
|
+
|
55
|
+
ws.ping('detecting presence') do
|
56
|
+
timeouter.cancel
|
57
|
+
end
|
58
|
+
end
|
46
59
|
end
|
47
60
|
end
|
48
61
|
|
@@ -55,7 +68,7 @@ module SlackKeepPresence
|
|
55
68
|
@ws = Faye::WebSocket::Client.new(ws_url, nil, ping: 30)
|
56
69
|
|
57
70
|
ws.on :open do |event|
|
58
|
-
logger.
|
71
|
+
logger.info('Connected to Slack RealTime API')
|
59
72
|
|
60
73
|
payload = {
|
61
74
|
type: 'presence_sub',
|
@@ -95,10 +108,7 @@ module SlackKeepPresence
|
|
95
108
|
# logger.debug "#{res}"
|
96
109
|
|
97
110
|
logger.info("Marking #{user} as active")
|
98
|
-
|
99
|
-
@ws = nil
|
100
|
-
@should_shutdown = true
|
101
|
-
start_realtime
|
111
|
+
restart_connection
|
102
112
|
end
|
103
113
|
end
|
104
114
|
|
@@ -111,6 +121,19 @@ module SlackKeepPresence
|
|
111
121
|
end
|
112
122
|
end
|
113
123
|
|
124
|
+
def restart_connection
|
125
|
+
@should_shutdown = true
|
126
|
+
@ws.close
|
127
|
+
@ws = nil
|
128
|
+
begin
|
129
|
+
start_realtime
|
130
|
+
rescue Faraday::ConnectionFailed
|
131
|
+
logger.info('Failed to establish connection, retrying...')
|
132
|
+
sleep 5
|
133
|
+
retry
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
114
137
|
def set_active
|
115
138
|
logger.info("Marking #{user} as active")
|
116
139
|
res = client.users_setPresence(presence: 'auto', set_active: true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-keep-presence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Frye
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|