notify-energon 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 87228b7fd0882937434b74f2884b20ec6cc93f7732f206be27942173aa553675
4
+ data.tar.gz: 0d0228de19e9391845d707fb6c727c67901091cb6a53681320c86281c421d926
5
+ SHA512:
6
+ metadata.gz: 1b28c4f025ab961568686d027ee52efa961808e262cf6736039fa8c38f4ede0795fde79f228f361da8fd60446c8d0b525b3e1c7442dbc68190f387752e8d9a81
7
+ data.tar.gz: 4169e5d9426b9a6ec0a0f94b923749d036cf9a9c34b64be21fa097ce793b2884bd569d45bd098584c2ad1e3ac4e78148c47579ed23431b24e5b1c6e34cfb3b7a
@@ -0,0 +1,10 @@
1
+
2
+ class Credentials
3
+ def set_credentials
4
+ @bot_token = ENV['SLACK_BOT_TOKEN']
5
+ @bot_name = ENV['SLACK_BOT_NAME']
6
+ @bot_icon = ENV['SLACK_BOT_ICON']
7
+ @bot_channel = ENV['SLACK_DEFAULT_CHANNEL']
8
+ @bot_default_output = ENV['SLACK_DEFAULT_OUTPUT']
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'discordrb/webhooks'
2
+
3
+ module MessageDiscord
4
+ def discord_event(text, web_hook = ENV['DISCORD_WEBHOOK'])
5
+ client = Discordrb::Webhooks::Client.new(url: web_hook)
6
+ client.execute do |builder|
7
+ builder.content = text
8
+ end
9
+ rescue StandardError => e
10
+ print "Discord: #{e.message}"
11
+ false
12
+ end
13
+ end
@@ -0,0 +1,84 @@
1
+ require_relative 'search_slack'
2
+
3
+ # Module for message interactions on Slack
4
+ module MessageSlack
5
+ include SearchOnSlack
6
+
7
+ def discern_end(data, ts = nil)
8
+ @thread = if data.respond_to? :thread_ts
9
+ data.ts
10
+ else
11
+ ts unless ts.nil?
12
+ end
13
+ @channel = if data.respond_to? :channel
14
+ data.channel
15
+ else
16
+ data
17
+ end
18
+ end
19
+
20
+ def attach_format(data, title, color = '#e93d94')
21
+ text = ''
22
+ data.each { |v| text << "#{v}\n" }
23
+ [{
24
+ "pretext": title,
25
+ "color": color,
26
+ "text": text
27
+ }]
28
+ end
29
+
30
+ def send_message(text, data, ts = nil)
31
+ discern_end(data, ts)
32
+ @web_client.chat_postMessage channel: @channel,
33
+ text: text,
34
+ icon_url: @bot_icon,
35
+ username: @bot_name,
36
+ thread_ts: @thread,
37
+ as_user: @bot_user
38
+ rescue Slack::Web::Api::Errors::SlackError => e
39
+ print e.message
40
+ false
41
+ end
42
+
43
+ def send_direct_message(text, channel)
44
+ dm = get_user_id(channel)
45
+ dm == false ? false : send_message(text, dm)
46
+ end
47
+
48
+ def send_attachment(attachment, data, ts = nil)
49
+ discern_end(data, ts)
50
+ @web_client.chat_postMessage channel: @channel,
51
+ attachments: attachment,
52
+ icon_url: @bot_icon,
53
+ username: @bot_name,
54
+ thread_ts: @thread,
55
+ as_user: @bot_user
56
+ end
57
+
58
+ def send_file(path, data, ts = nil)
59
+ file = path
60
+ discern_end(data, ts)
61
+ @web_client.files_upload channels: @channel,
62
+ icon_url: @bot_icon,
63
+ username: @bot_name,
64
+ thread_ts: @thread,
65
+ as_user: @bot_user,
66
+ file: Faraday::UploadIO.new(file, 'text'),
67
+ title: File.basename(file),
68
+ filename: File.basename(file)
69
+ rescue Slack::Web::Api::Errors::SlackError => e
70
+ print e.message
71
+ false
72
+ end
73
+
74
+ def add_reaction(icon, channel, thread)
75
+ @web_client.reactions_add channel: channel,
76
+ name: icon,
77
+ timestamp: thread,
78
+ icon_url: @bot_icon,
79
+ username: @bot_name
80
+ rescue Slack::Web::Api::Errors::SlackError => e
81
+ print e.message
82
+ false
83
+ end
84
+ end
@@ -0,0 +1,74 @@
1
+ # Module for searching content on Slack
2
+ module SearchOnSlack
3
+ def get_user_id(channel = @channel_id)
4
+ dm = @web_client.conversations_open users: channel
5
+ dm.channel.id
6
+ rescue Slack::Web::Api::Errors::SlackError => e
7
+ print e.message
8
+ false
9
+ end
10
+
11
+ def get_user_info(user)
12
+ c = @web_client.users_info user: user
13
+ c.user
14
+ rescue Slack::Web::Api::Errors::SlackError => e
15
+ print e.message
16
+ false
17
+ end
18
+
19
+ def get_user_list
20
+ @web_client.users_list
21
+ rescue Slack::Web::Api::Errors::SlackError => e
22
+ print e.message
23
+ false
24
+ end
25
+
26
+ def verify_type
27
+ properties = {
28
+ 'channel' => @properties.is_channel,
29
+ 'group' => @properties.is_group,
30
+ 'im' => @properties.is_im
31
+ }
32
+ check = ''
33
+ properties.each { |k, v| check = k if v == true }
34
+ check
35
+ end
36
+
37
+ def conversation_type(channel = @channel_id)
38
+ @channel_id = channel if @channel_id.nil?
39
+ result = conversation_info
40
+ if result == false
41
+ print 'Check if IM'
42
+ @channel_id = get_user_id
43
+ conversation_info == false ? false : verify_type
44
+ else
45
+ verify_type
46
+ end
47
+ rescue Slack::Web::Api::Errors::SlackError => e
48
+ print e.message
49
+ false
50
+ end
51
+
52
+ def conversation_info(channel = @channel_id)
53
+ info = @web_client.conversations_info channel: channel
54
+ @properties = info.channel
55
+ rescue Slack::Web::Api::Errors::SlackError => e
56
+ print e.message
57
+ false
58
+ end
59
+
60
+ def conversation_list
61
+ @web_client.conversations_list.channels
62
+ rescue Slack::Web::Api::Errors::SlackError => e
63
+ print e.message
64
+ false
65
+ end
66
+
67
+ def search_messages_on(channel, quantity = 5)
68
+ # type = conversation_type(channel)
69
+ @web_client.conversations_history channel: channel, count: quantity
70
+ rescue Slack::Web::Api::Errors::SlackError => e
71
+ print e.message
72
+ "Channel not found #{channel}"
73
+ end
74
+ end
@@ -0,0 +1,29 @@
1
+ require 'slack-ruby-client'
2
+ require_relative "modules/search_slack"
3
+ require_relative "modules/message_slack"
4
+ require_relative "modules/message_discord"
5
+ require_relative "credentials"
6
+
7
+ # Slack Set Up
8
+ class EnergonNotify < Credentials
9
+ include MessageSlack
10
+ include SearchOnSlack
11
+ include MessageDiscord
12
+
13
+ def initialize(name: '', image: '', slack_enabled: false, slack_token: nil, slack_as_user: false)
14
+ set_credentials
15
+ if slack_enabled
16
+ Slack.configure do |config|
17
+ config.token = slack_token.nil? ? @bot_token : slack_token
18
+ config.raise 'Missing token' unless config.token
19
+ end
20
+
21
+ @bot_name = name unless name.empty?
22
+ @bot_icon = image unless image.empty?
23
+ @bot_user = slack_as_user
24
+
25
+ @time_client ||= Slack::RealTime::Client.new
26
+ @web_client ||= Slack::Web::Client.new
27
+ end
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: notify-energon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Luciano Adonis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: slack-ruby-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.14.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.14.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: discordrb
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.3.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.3.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: twitter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 7.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 7.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ description: Send notifications.
70
+ email: luciano.adonisv@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - lib/credentials.rb
76
+ - lib/modules/message_discord.rb
77
+ - lib/modules/message_slack.rb
78
+ - lib/modules/search_slack.rb
79
+ - lib/notify-energon.rb
80
+ homepage: https://rubygems.org/gems/core_slack
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubygems_version: 3.0.3
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Spam messages to our clients
103
+ test_files: []