driftwood 0.0.3 → 0.0.4

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