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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/driftwood.rb +22 -0
- data/lib/driftwood/bigquery.rb +4 -0
- data/lib/driftwood/slack.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 577ddadc21bbfaa22fec813d3b3129f6c2c22b14
|
4
|
+
data.tar.gz: 4c398d3e159fdc8c0b400ae25aff5d88ff6ac71f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 639d06b08ad608fe3a40acc9828ca7ef669c3fb77525f17ea6bdf87e96772bc264c178bd2c70aa57c8bc47bbb6ff1f365d3cdfa90445258f72064cd41e168305
|
7
|
+
data.tar.gz: a8dd564442f732181b712ce80eef36e441c6f9d7f04a9655a76043349304bb71868f8b08895eb584f722f30773886f81bc93d8e27fd950fbffdfe47d7223e14e
|
data/CHANGELOG.md
CHANGED
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
|
data/lib/driftwood/bigquery.rb
CHANGED
@@ -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()
|
data/lib/driftwood/slack.rb
CHANGED
@@ -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.
|
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-
|
11
|
+
date: 2018-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|