senrigan 0.1.2 → 0.2.0

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: 16d02137fd9bdfa9c8672bd248ed7b94e0d189ebe97b1d6e83c7f550f82fce91
4
- data.tar.gz: a62f0e2614eb78d065b80cf40a1a26053d043b4c86c7528a4ce40ece1215842f
3
+ metadata.gz: 31e1010fe33a276e722f409afa222d52fd9f0640cfb3718da9182d3e6307ec88
4
+ data.tar.gz: 932916ac50b24d6e80a38cbbd64384f30cc12e48cad3c09a6eb41cf52b9a01ea
5
5
  SHA512:
6
- metadata.gz: 5e740a6f81d821e17edace236d4681975ef6ce1e5e47b4d9170381719ed251d2e0874ada5c539d440aa5f3052baffc0f2fad4ca92a2822b1a0f828a686ca2041
7
- data.tar.gz: 11a2cc641a20b1addb6ccf7110232188036a90d266c08d789c3588c84b99903e2e57cb108786a94d1215fc6a86dd85a879ccfdb3054daeb2208caf3ee638f31b
6
+ metadata.gz: 5b3fc066d08f12627258daedc9f4e4b7d378c996454d78ebd28b1c4a2c38395120d190c5124088f4ed6006ec09c38cf9e46d15b2a6c2081bdd2b1f6b7e14a5d6
7
+ data.tar.gz: 56c06758235706b3a7be1ad3c73a985a590bb9f991cd1552af142f17d8436fc4154c2339c432d1fc4654ce97bbf45ba340a06fc702e0da40510d8edb3077e8a5
@@ -29,6 +29,8 @@ module Senrigan
29
29
  @rtm.start!
30
30
  rescue StandardError => e
31
31
  STDOUT.puts e.inspect if ENV['DEBUG'].to_i != 0
32
+ ensure
33
+ @rtm.stop! rescue nil
32
34
  end
33
35
  sleep 5
34
36
  end
@@ -49,10 +51,7 @@ module Senrigan
49
51
  end
50
52
 
51
53
  def regenerate_cache
52
- @channel_caches = (
53
- @client.channels_list['channels'] +
54
- @client.groups_list['groups']
55
- ).map { |c| [c['id'], c] }.to_h
54
+ @channel_caches = {}
56
55
  @user_caches = @client.users_list['members'].map { |u| [u['id'], u] }.to_h
57
56
  end
58
57
 
@@ -61,37 +60,23 @@ module Senrigan
61
60
  resp = @client.users_info(
62
61
  user: user_id
63
62
  )
64
- resp['channel'] || OpenStruct.new
63
+ resp['user'] || OpenStruct.new
65
64
  end
66
65
  end
67
66
 
68
67
  def fetch_channel(channel_id)
69
68
  @channel_caches[channel_id] ||= begin
70
- data =
71
- case channel_id.first
72
- when 'C'
73
- resp = @client.conversations_info(
74
- channel: channel_id
75
- )
76
- resp['channel']
77
- when 'G'
78
- resp = @client.groups_info(
79
- channel: channel_id
80
- )
81
- resp['group']
82
- else
83
- OpenStruct.new(name: channel_id, is_private: true)
84
- end
69
+ data = @client.conversations_info(channel: channel_id)['channel']
85
70
  data || OpenStruct.new(name: channel_id, is_private: false)
86
71
  end
87
72
  end
88
73
 
89
74
  def on_message(msg)
90
75
  entity =
91
- case
92
- when msg.subtype == 'message_changed'
76
+ case msg.subtype
77
+ when 'message_changed'
93
78
  create_message_change_event_entity(msg)
94
- when msg.subtype.nil?, msg.subtype == 'bot_message'
79
+ when nil, 'bot_message', 'me_message'
95
80
  create_message_entity(msg)
96
81
  end
97
82
  return unless entity
@@ -171,7 +156,7 @@ module Senrigan
171
156
  )
172
157
  when msg.user, msg.message&.user
173
158
  user = fetch_user(msg.user || msg.message.user)
174
- name = [user&.profile&.display_name, user&.name, msg.user].find { |n| !n.nil? && !n.empty? }
159
+ name = user ? pick_name_from_user(user) : msg.user
175
160
  Entities::User.new(
176
161
  name: name.to_s,
177
162
  is_bot: user&.is_bot
@@ -181,14 +166,20 @@ module Senrigan
181
166
  end
182
167
  end
183
168
 
169
+ def pick_name_from_user(user)
170
+ return '' unless user
171
+ return user.profile.display_name if user.profile&.display_name
172
+ user.name.to_s
173
+ end
174
+
184
175
  def format_text(src_text)
185
176
  text = src_text.to_s.dup
186
177
  text.gsub!(/\\b/, '')
187
178
  text.gsub!(/\<\@(U[^>\|]+)\>/) do
188
- "@#{fetch_user(Regexp.last_match(1)).name}"
179
+ "@#{pick_name_from_user(fetch_user(Regexp.last_match(1)))}"
189
180
  end
190
181
  text.gsub!(/\<\@(U[^\|]+)\|([^>]+)\>/) do
191
- "@#{fetch_user(Regexp.last_match(1)).name}"
182
+ "@#{pick_name_from_user(fetch_user(Regexp.last_match(1)))}"
192
183
  end
193
184
  text.gsub!(/\<\#(C[^>\|]+)\>/) do
194
185
  "##{fetch_channel(Regexp.last_match(1)).name}"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Senrigan
4
- VERSION = '0.1.2'
4
+ VERSION = '0.2.0'
5
5
  end
data/senrigan.gemspec CHANGED
@@ -23,7 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'faye-websocket'
24
24
  spec.add_dependency 'gemoji'
25
25
  spec.add_dependency 'slack-ruby-client'
26
- spec.add_development_dependency 'bundler', '~> 1.16'
27
- spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_dependency 'async-websocket', '~> 0.8.0'
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'rake'
28
29
  spec.add_development_dependency 'rubocop'
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: senrigan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ru_shalm
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-30 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -67,33 +67,47 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: async-websocket
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.16'
76
- type: :development
75
+ version: 0.8.0
76
+ type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.16'
82
+ version: 0.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: '10.0'
103
+ version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: '10.0'
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,7 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
- description:
125
+ description:
112
126
  email:
113
127
  - ru_shalm@hazimu.com
114
128
  executables:
@@ -139,7 +153,7 @@ files:
139
153
  homepage: https://github.com/rutan/senrigan
140
154
  licenses: []
141
155
  metadata: {}
142
- post_install_message:
156
+ post_install_message:
143
157
  rdoc_options: []
144
158
  require_paths:
145
159
  - lib
@@ -154,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
168
  - !ruby/object:Gem::Version
155
169
  version: '0'
156
170
  requirements: []
157
- rubygems_version: 3.0.3
158
- signing_key:
171
+ rubygems_version: 3.2.3
172
+ signing_key:
159
173
  specification_version: 4
160
174
  summary: Slack timeline viewer
161
175
  test_files: []