driftwood 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: fbf713110adaec5423a677c0298e3b976872d7ef
4
- data.tar.gz: 4d2a952a4311b32825349329b0d01a9f39e490b1
3
+ metadata.gz: 577ddadc21bbfaa22fec813d3b3129f6c2c22b14
4
+ data.tar.gz: 4c398d3e159fdc8c0b400ae25aff5d88ff6ac71f
5
5
  SHA512:
6
- metadata.gz: 921d7b07c456f0e16e14a121f5aef3c1c3111b052d47f463d11ac8617cef59339bf93f27857c14b658871a8ce24f2ab4a6e6c89b03a90bd81922237de3ba9be6
7
- data.tar.gz: 57089dcf55b76c5654a3de1662296e5de675d13b882de2f89b717df6dd82902330950195cfbc9db43fb4b7e72bf38e5ffb8e61a75dd92640b95f7e9043c49112
6
+ metadata.gz: 639d06b08ad608fe3a40acc9828ca7ef669c3fb77525f17ea6bdf87e96772bc264c178bd2c70aa57c8bc47bbb6ff1f365d3cdfa90445258f72064cd41e168305
7
+ data.tar.gz: a8dd564442f732181b712ce80eef36e441c6f9d7f04a9655a76043349304bb71868f8b08895eb584f722f30773886f81bc93d8e27fd950fbffdfe47d7223e14e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # v0.0.4
2
+
3
+ Fully purge deleted users
4
+ Log channel joins
5
+
1
6
  # v0.0.3
2
7
 
3
8
  Corrected teams object filter
data/lib/driftwood.rb CHANGED
@@ -46,6 +46,17 @@ class Driftwood < Sinatra::Base
46
46
  user = @slack.normalize_user(event_data['user'])
47
47
  $logger.info "Registered new user: #{user['name']} (#{user['real_name']})"
48
48
  @bigquery.insert_user(user)
49
+ # send them welcome infos
50
+
51
+ end
52
+
53
+ @slack.register_handler('member_joined_channel') do |team_id, event_data|
54
+ user = @slack.user_info(event_data['team'], event_data['user'])
55
+ user = @slack.normalize_user(user)
56
+ channel = @slack.channel_name(event_data['team'], event_data['channel'])
57
+ $logger.info "User #{user['name']} (#{user['real_name']}) joined ##{channel}"
58
+ # send them welcome infos
59
+
49
60
  end
50
61
 
51
62
  @slack.register_handler('message') do |team_id, event_data|
@@ -66,6 +77,17 @@ class Driftwood < Sinatra::Base
66
77
  $logger.error e.message
67
78
  $logger.debug e.backtrace.join("\n")
68
79
  end
80
+
81
+ loop do
82
+ sleep 86400 # Once a day; 60 * 60 * 24
83
+ begin
84
+ $logger.info "Purging deleted users..."
85
+ @bigquery.purge_deleted_users
86
+ rescue => e
87
+ $logger.error e.message
88
+ $logger.debug e.backtrace.join("\n")
89
+ end
90
+ end
69
91
  end
70
92
 
71
93
  end
@@ -126,6 +126,10 @@ class Driftwood::Bigquery
126
126
  :creation => Time.now.strftime('%Y-%m-%d %H:%M:%S%z')).success?
127
127
  end
128
128
 
129
+ def purge_deleted_users
130
+ @dataset.query('DELETE FROM slack_users WHERE deleted = true')
131
+ end
132
+
129
133
  # Ensure that all users have creation dates. If they don't have one yet, assume now
130
134
  # This will catch any users who've been created during downtime if we restart the service
131
135
  def reconcile_user_creations()
@@ -219,7 +219,7 @@ class Driftwood::Slack
219
219
 
220
220
  users.each do |row|
221
221
  normalize_user(row)
222
- end
222
+ end.compact
223
223
  end
224
224
 
225
225
  def messages(team_id, starting_from = 0)
@@ -287,12 +287,14 @@ class Driftwood::Slack
287
287
  end
288
288
 
289
289
  def normalize_user(user)
290
+ # Why slack? Why?
291
+ return if user['deleted']
292
+
290
293
  preserve_fields = [ 'team_id', 'user_id', 'name', 'real_name','display_name',
291
294
  'updated', 'deleted', 'tz', 'tz_offset', 'is_owner', 'is_admin',
292
295
  'status_text', 'status_emoji', 'image_72', 'image_192',
296
+ 'title', 'phone', 'skype', 'email',
293
297
  ]
294
- # Why slack? Why?
295
- preserve_fields.concat ['title', 'phone', 'skype', 'email'] unless user['deleted']
296
298
 
297
299
  user['user_id'] = user.delete('id')
298
300
  user['title'] = user['profile']['title']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: driftwood
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-19 00:00:00.000000000 Z
11
+ date: 2018-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra