lex-slack 0.1.0 → 0.3.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 +4 -4
- data/.github/workflows/ci.yml +16 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.rubocop.yml +56 -0
- data/CHANGELOG.md +41 -0
- data/CLAUDE.md +89 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +88 -0
- data/LICENSE.txt +21 -0
- data/README.md +223 -0
- data/Rakefile +8 -0
- data/lex-slack.gemspec +29 -0
- data/lib/legion/extensions/slack/actors/message_poller.rb +79 -0
- data/lib/legion/extensions/slack/client.rb +51 -0
- data/lib/legion/extensions/slack/helpers/client.rb +30 -0
- data/lib/legion/extensions/slack/runners/blocks.rb +97 -0
- data/lib/legion/extensions/slack/runners/bookmarks.rb +46 -0
- data/lib/legion/extensions/slack/runners/chat.rb +63 -0
- data/lib/legion/extensions/slack/runners/conversations.rb +104 -0
- data/lib/legion/extensions/slack/runners/files.rb +57 -0
- data/lib/legion/extensions/slack/runners/pins.rb +33 -0
- data/lib/legion/extensions/slack/runners/reactions.rb +43 -0
- data/lib/legion/extensions/slack/runners/reminders.rb +47 -0
- data/lib/legion/extensions/slack/runners/search.rb +35 -0
- data/lib/legion/extensions/slack/runners/usergroups.rb +67 -0
- data/lib/legion/extensions/slack/runners/users.rb +48 -0
- data/lib/legion/extensions/slack/runners/views.rb +41 -0
- data/lib/legion/extensions/slack/version.rb +9 -0
- data/lib/legion/extensions/slack.rb +26 -0
- metadata +44 -101
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Slack
|
|
6
|
+
module Runners
|
|
7
|
+
module Search
|
|
8
|
+
include Helpers::Client
|
|
9
|
+
|
|
10
|
+
def search_messages(query:, token: nil, sort: nil, sort_dir: nil, cursor: nil, count: 20, **)
|
|
11
|
+
params = { query: query, count: count }
|
|
12
|
+
params[:sort] = sort if sort
|
|
13
|
+
params[:sort_dir] = sort_dir if sort_dir
|
|
14
|
+
params[:cursor] = cursor if cursor
|
|
15
|
+
conn = api_connection(token: token, **)
|
|
16
|
+
resp = conn.get('search.messages', params)
|
|
17
|
+
{ ok: resp.body['ok'], messages: resp.body['messages'] }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def search_files(query:, token: nil, sort: nil, sort_dir: nil, cursor: nil, count: 20, **)
|
|
21
|
+
params = { query: query, count: count }
|
|
22
|
+
params[:sort] = sort if sort
|
|
23
|
+
params[:sort_dir] = sort_dir if sort_dir
|
|
24
|
+
params[:cursor] = cursor if cursor
|
|
25
|
+
conn = api_connection(token: token, **)
|
|
26
|
+
resp = conn.get('search.files', params)
|
|
27
|
+
{ ok: resp.body['ok'], files: resp.body['files'] }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Slack
|
|
6
|
+
module Runners
|
|
7
|
+
module Usergroups
|
|
8
|
+
include Helpers::Client
|
|
9
|
+
|
|
10
|
+
def list_usergroups(token: nil, include_users: false, include_disabled: false, **)
|
|
11
|
+
conn = api_connection(token: token, **)
|
|
12
|
+
resp = conn.get('usergroups.list',
|
|
13
|
+
{ include_users: include_users, include_disabled: include_disabled })
|
|
14
|
+
{ ok: resp.body['ok'], usergroups: resp.body['usergroups'] }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def create_usergroup(name:, token: nil, handle: nil, description: nil, channels: nil, **)
|
|
18
|
+
payload = { name: name }
|
|
19
|
+
payload[:handle] = handle if handle
|
|
20
|
+
payload[:description] = description if description
|
|
21
|
+
payload[:channels] = channels if channels
|
|
22
|
+
conn = api_connection(token: token, **)
|
|
23
|
+
resp = conn.post('usergroups.create', payload)
|
|
24
|
+
{ ok: resp.body['ok'], usergroup: resp.body['usergroup'] }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def update_usergroup(usergroup:, token: nil, name: nil, handle: nil, description: nil, channels: nil, **)
|
|
28
|
+
payload = { usergroup: usergroup }
|
|
29
|
+
payload[:name] = name if name
|
|
30
|
+
payload[:handle] = handle if handle
|
|
31
|
+
payload[:description] = description if description
|
|
32
|
+
payload[:channels] = channels if channels
|
|
33
|
+
conn = api_connection(token: token, **)
|
|
34
|
+
resp = conn.post('usergroups.update', payload)
|
|
35
|
+
{ ok: resp.body['ok'], usergroup: resp.body['usergroup'] }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def disable_usergroup(usergroup:, token: nil, **)
|
|
39
|
+
conn = api_connection(token: token, **)
|
|
40
|
+
resp = conn.post('usergroups.disable', { usergroup: usergroup })
|
|
41
|
+
{ ok: resp.body['ok'], usergroup: resp.body['usergroup'] }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def enable_usergroup(usergroup:, token: nil, **)
|
|
45
|
+
conn = api_connection(token: token, **)
|
|
46
|
+
resp = conn.post('usergroups.enable', { usergroup: usergroup })
|
|
47
|
+
{ ok: resp.body['ok'], usergroup: resp.body['usergroup'] }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def list_usergroup_users(usergroup:, token: nil, **)
|
|
51
|
+
conn = api_connection(token: token, **)
|
|
52
|
+
resp = conn.get('usergroups.users.list', { usergroup: usergroup })
|
|
53
|
+
{ ok: resp.body['ok'], users: resp.body['users'] }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def update_usergroup_users(usergroup:, users:, token: nil, **)
|
|
57
|
+
conn = api_connection(token: token, **)
|
|
58
|
+
resp = conn.post('usergroups.users.update', { usergroup: usergroup, users: users })
|
|
59
|
+
{ ok: resp.body['ok'], usergroup: resp.body['usergroup'] }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Slack
|
|
6
|
+
module Runners
|
|
7
|
+
module Users
|
|
8
|
+
include Helpers::Client
|
|
9
|
+
|
|
10
|
+
def list_users(token: nil, cursor: nil, limit: 200, **)
|
|
11
|
+
params = { limit: limit }
|
|
12
|
+
params[:cursor] = cursor if cursor
|
|
13
|
+
conn = api_connection(token: token, **)
|
|
14
|
+
resp = conn.get('users.list', params)
|
|
15
|
+
{ ok: resp.body['ok'], members: resp.body['members'],
|
|
16
|
+
response_metadata: resp.body['response_metadata'] }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def user_info(user:, token: nil, **)
|
|
20
|
+
conn = api_connection(token: token, **)
|
|
21
|
+
resp = conn.get('users.info', { user: user })
|
|
22
|
+
{ ok: resp.body['ok'], user: resp.body['user'] }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def lookup_by_email(email:, token: nil, **)
|
|
26
|
+
conn = api_connection(token: token, **)
|
|
27
|
+
resp = conn.get('users.lookupByEmail', { email: email })
|
|
28
|
+
{ ok: resp.body['ok'], user: resp.body['user'] }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def get_presence(user:, token: nil, **)
|
|
32
|
+
conn = api_connection(token: token, **)
|
|
33
|
+
resp = conn.get('users.getPresence', { user: user })
|
|
34
|
+
{ ok: resp.body['ok'], presence: resp.body['presence'] }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def set_presence(presence:, token: nil, **)
|
|
38
|
+
conn = api_connection(token: token, **)
|
|
39
|
+
resp = conn.post('users.setPresence', { presence: presence })
|
|
40
|
+
{ ok: resp.body['ok'] }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Slack
|
|
6
|
+
module Runners
|
|
7
|
+
module Views
|
|
8
|
+
include Helpers::Client
|
|
9
|
+
|
|
10
|
+
def open_view(trigger_id:, view:, token: nil, **)
|
|
11
|
+
conn = api_connection(token: token, **)
|
|
12
|
+
resp = conn.post('views.open', { trigger_id: trigger_id, view: view })
|
|
13
|
+
{ ok: resp.body['ok'], view: resp.body['view'] }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def push_view(trigger_id:, view:, token: nil, **)
|
|
17
|
+
conn = api_connection(token: token, **)
|
|
18
|
+
resp = conn.post('views.push', { trigger_id: trigger_id, view: view })
|
|
19
|
+
{ ok: resp.body['ok'], view: resp.body['view'] }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update_view(view_id:, view:, token: nil, hash: nil, **)
|
|
23
|
+
payload = { view_id: view_id, view: view }
|
|
24
|
+
payload[:hash] = hash if hash
|
|
25
|
+
conn = api_connection(token: token, **)
|
|
26
|
+
resp = conn.post('views.update', payload)
|
|
27
|
+
{ ok: resp.body['ok'], view: resp.body['view'] }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def publish_view(user_id:, view:, token: nil, **)
|
|
31
|
+
conn = api_connection(token: token, **)
|
|
32
|
+
resp = conn.post('views.publish', { user_id: user_id, view: view })
|
|
33
|
+
{ ok: resp.body['ok'], view: resp.body['view'] }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/slack/version'
|
|
4
|
+
require 'legion/extensions/slack/helpers/client'
|
|
5
|
+
require 'legion/extensions/slack/runners/blocks'
|
|
6
|
+
require 'legion/extensions/slack/runners/chat'
|
|
7
|
+
require 'legion/extensions/slack/runners/conversations'
|
|
8
|
+
require 'legion/extensions/slack/runners/users'
|
|
9
|
+
require 'legion/extensions/slack/runners/reactions'
|
|
10
|
+
require 'legion/extensions/slack/runners/files'
|
|
11
|
+
require 'legion/extensions/slack/runners/pins'
|
|
12
|
+
require 'legion/extensions/slack/runners/bookmarks'
|
|
13
|
+
require 'legion/extensions/slack/runners/reminders'
|
|
14
|
+
require 'legion/extensions/slack/runners/usergroups'
|
|
15
|
+
require 'legion/extensions/slack/runners/views'
|
|
16
|
+
require 'legion/extensions/slack/runners/search'
|
|
17
|
+
require 'legion/extensions/slack/actors/message_poller'
|
|
18
|
+
require 'legion/extensions/slack/client'
|
|
19
|
+
|
|
20
|
+
module Legion
|
|
21
|
+
module Extensions
|
|
22
|
+
module Slack
|
|
23
|
+
extend Legion::Extensions::Core if Legion::Extensions.const_defined? :Core
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
metadata
CHANGED
|
@@ -1,130 +1,74 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-slack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: rake
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rspec
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rubocop
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: simplecov
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
12
|
- !ruby/object:Gem::Dependency
|
|
70
13
|
name: faraday
|
|
71
14
|
requirement: !ruby/object:Gem::Requirement
|
|
72
15
|
requirements:
|
|
73
16
|
- - ">="
|
|
74
17
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :runtime
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: faraday_middleware
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :runtime
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: multi_json
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - ">="
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
18
|
+
version: '2.0'
|
|
104
19
|
type: :runtime
|
|
105
20
|
prerelease: false
|
|
106
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
22
|
requirements:
|
|
108
23
|
- - ">="
|
|
109
24
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
|
-
description: Connects Legion to Slack
|
|
25
|
+
version: '2.0'
|
|
26
|
+
description: Connects Legion to Slack via Web API and incoming webhooks
|
|
112
27
|
email:
|
|
113
28
|
- matthewdiverson@gmail.com
|
|
114
29
|
executables: []
|
|
115
30
|
extensions: []
|
|
116
31
|
extra_rdoc_files: []
|
|
117
|
-
files:
|
|
118
|
-
|
|
32
|
+
files:
|
|
33
|
+
- ".github/workflows/ci.yml"
|
|
34
|
+
- ".gitignore"
|
|
35
|
+
- ".rspec"
|
|
36
|
+
- ".rubocop.yml"
|
|
37
|
+
- CHANGELOG.md
|
|
38
|
+
- CLAUDE.md
|
|
39
|
+
- Gemfile
|
|
40
|
+
- Gemfile.lock
|
|
41
|
+
- LICENSE.txt
|
|
42
|
+
- README.md
|
|
43
|
+
- Rakefile
|
|
44
|
+
- lex-slack.gemspec
|
|
45
|
+
- lib/legion/extensions/slack.rb
|
|
46
|
+
- lib/legion/extensions/slack/actors/message_poller.rb
|
|
47
|
+
- lib/legion/extensions/slack/client.rb
|
|
48
|
+
- lib/legion/extensions/slack/helpers/client.rb
|
|
49
|
+
- lib/legion/extensions/slack/runners/blocks.rb
|
|
50
|
+
- lib/legion/extensions/slack/runners/bookmarks.rb
|
|
51
|
+
- lib/legion/extensions/slack/runners/chat.rb
|
|
52
|
+
- lib/legion/extensions/slack/runners/conversations.rb
|
|
53
|
+
- lib/legion/extensions/slack/runners/files.rb
|
|
54
|
+
- lib/legion/extensions/slack/runners/pins.rb
|
|
55
|
+
- lib/legion/extensions/slack/runners/reactions.rb
|
|
56
|
+
- lib/legion/extensions/slack/runners/reminders.rb
|
|
57
|
+
- lib/legion/extensions/slack/runners/search.rb
|
|
58
|
+
- lib/legion/extensions/slack/runners/usergroups.rb
|
|
59
|
+
- lib/legion/extensions/slack/runners/users.rb
|
|
60
|
+
- lib/legion/extensions/slack/runners/views.rb
|
|
61
|
+
- lib/legion/extensions/slack/version.rb
|
|
62
|
+
homepage: https://github.com/LegionIO/lex-slack
|
|
119
63
|
licenses:
|
|
120
64
|
- MIT
|
|
121
65
|
metadata:
|
|
122
|
-
homepage_uri: https://
|
|
123
|
-
source_code_uri: https://
|
|
124
|
-
documentation_uri: https://
|
|
125
|
-
changelog_uri: https://
|
|
126
|
-
bug_tracker_uri: https://
|
|
127
|
-
|
|
66
|
+
homepage_uri: https://github.com/LegionIO/lex-slack
|
|
67
|
+
source_code_uri: https://github.com/LegionIO/lex-slack
|
|
68
|
+
documentation_uri: https://github.com/LegionIO/lex-slack
|
|
69
|
+
changelog_uri: https://github.com/LegionIO/lex-slack
|
|
70
|
+
bug_tracker_uri: https://github.com/LegionIO/lex-slack/issues
|
|
71
|
+
rubygems_mfa_required: 'true'
|
|
128
72
|
rdoc_options: []
|
|
129
73
|
require_paths:
|
|
130
74
|
- lib
|
|
@@ -132,15 +76,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
132
76
|
requirements:
|
|
133
77
|
- - ">="
|
|
134
78
|
- !ruby/object:Gem::Version
|
|
135
|
-
version:
|
|
79
|
+
version: '3.4'
|
|
136
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
81
|
requirements:
|
|
138
82
|
- - ">="
|
|
139
83
|
- !ruby/object:Gem::Version
|
|
140
84
|
version: '0'
|
|
141
85
|
requirements: []
|
|
142
|
-
rubygems_version: 3.
|
|
143
|
-
signing_key:
|
|
86
|
+
rubygems_version: 3.6.9
|
|
144
87
|
specification_version: 4
|
|
145
88
|
summary: LEX::Slack
|
|
146
89
|
test_files: []
|