slack-keep-presence 0.1.6 → 0.1.7
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/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
|