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 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