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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ce3531d7c5ae86aab7b3f84c86e6e443d9967940f9bd1e9cf36fab0208f10f0
4
- data.tar.gz: 5774380e1e33479b4b5b36f3c45ee7455bf5c7c640b07186d894ccd280844342
3
+ metadata.gz: 8c4ab0e6c0b9901160b3bea4d6bd7977e7c98acde52a9f0b6b7bb87631ae81cc
4
+ data.tar.gz: dd4057a7d4afc1fd0a4bcb973b2c2699227cd6296d198cea98d74e8b4cef3f60
5
5
  SHA512:
6
- metadata.gz: 036aaa6bc6dc2196ae89381c8780e46b83ff6a43a0f76810f80ab45c5cb8442596af3a7eb4adfcc4a51b04df78725d568319d3430def2bd2fc51dc4fadf810ce
7
- data.tar.gz: 36cdb7928998f3b2e03b55b5e4e0e763b5fdb2f56fdeea629b8632f5452f5e7dac5838824df0af4ba5e83e213d69d1dcae742be8b77e4c34a413a2c1b540540c
6
+ metadata.gz: 650673b0c2a572ce6bc58539b437ec98b0417cb45ca58aa028c40b52d013c7cccbdc13e78ecef3d38a86fe94b2342457436ccbb63998df79633e62c28d69e242
7
+ data.tar.gz: a0e699e2029387f6d2adc5f50ac24aed3d754d22cb2aae14c5b005130d518d117e10e417659eb3aea8166051929750961518b1c9382f0b7b2efdafc45c6c02c1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack-keep-presence (0.1.6)
4
+ slack-keep-presence (0.1.7)
5
5
  faye-websocket (~> 0.10.6)
6
6
  slack-api (~> 1.6)
7
7
 
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
  ```
@@ -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.debug('Connected to Slack RealTime API')
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
- ws.close
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)
@@ -1,3 +1,3 @@
1
1
  module SlackKeepPresence
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
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.6
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-01-30 00:00:00.000000000 Z
11
+ date: 2018-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler