discord_mailer 0.1.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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +53 -0
- data/README.md +64 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/discord_mailer.gemspec +31 -0
- data/lib/discord_mailer/configuration.rb +30 -0
- data/lib/discord_mailer/version.rb +3 -0
- data/lib/discord_mailer.rb +52 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ad6d921b81a02dba8b777f1b4ad4fd040545ecedc774a45f89b16ada473ae147
|
4
|
+
data.tar.gz: bed8168ccf1bfd0c25e7c3cb77064efe13eed4a45de442a4e0bc00e4d3ca83aa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9c6b30b6ddd627e6071f0cd7f9661e70e3c45b7b9d6720e3f2b3ba6369e13a1613a2e4f26253076a9cf0775de29b7839a4c4bbf052a8e46662b2cf6810efa200
|
7
|
+
data.tar.gz: 89f92c7c1b00bd9d984d49b28113db1ecd0baeec30222bd959d74f390ffeda4ea5dda50f2e51de3bf16dd6b625743a65ec160992d2cbd4556eb1164eb1623b67
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
discord_mailer (0.1.0)
|
5
|
+
rest-client
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.5.0)
|
11
|
+
domain_name (0.5.20190701)
|
12
|
+
unf (>= 0.0.5, < 1.0.0)
|
13
|
+
http-accept (1.7.0)
|
14
|
+
http-cookie (1.0.5)
|
15
|
+
domain_name (~> 0.5)
|
16
|
+
mime-types (3.4.1)
|
17
|
+
mime-types-data (~> 3.2015)
|
18
|
+
mime-types-data (3.2022.0105)
|
19
|
+
netrc (0.11.0)
|
20
|
+
rake (12.3.3)
|
21
|
+
rest-client (2.1.0)
|
22
|
+
http-accept (>= 1.7.0, < 2.0)
|
23
|
+
http-cookie (>= 1.0.2, < 2.0)
|
24
|
+
mime-types (>= 1.16, < 4.0)
|
25
|
+
netrc (~> 0.8)
|
26
|
+
rspec (3.11.0)
|
27
|
+
rspec-core (~> 3.11.0)
|
28
|
+
rspec-expectations (~> 3.11.0)
|
29
|
+
rspec-mocks (~> 3.11.0)
|
30
|
+
rspec-core (3.11.0)
|
31
|
+
rspec-support (~> 3.11.0)
|
32
|
+
rspec-expectations (3.11.0)
|
33
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
34
|
+
rspec-support (~> 3.11.0)
|
35
|
+
rspec-mocks (3.11.1)
|
36
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
37
|
+
rspec-support (~> 3.11.0)
|
38
|
+
rspec-support (3.11.0)
|
39
|
+
unf (0.1.4)
|
40
|
+
unf_ext
|
41
|
+
unf_ext (0.0.8.2)
|
42
|
+
|
43
|
+
PLATFORMS
|
44
|
+
ruby
|
45
|
+
|
46
|
+
DEPENDENCIES
|
47
|
+
bundler (~> 2.1.a)
|
48
|
+
discord_mailer!
|
49
|
+
rake (~> 12.0)
|
50
|
+
rspec (~> 3.0)
|
51
|
+
|
52
|
+
BUNDLED WITH
|
53
|
+
2.1.4
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# DiscordMailer
|
2
|
+
DiscordMailer gem helps separate business logic from logic of message delivery. It structures code just like ActionMailer.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
Add this line to your application's Gemfile:
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
gem 'discord_mailer'
|
10
|
+
```
|
11
|
+
|
12
|
+
And then execute:
|
13
|
+
|
14
|
+
$ bundle install
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
|
18
|
+
$ gem install discord_mailer
|
19
|
+
|
20
|
+
## Configuring
|
21
|
+
|
22
|
+
Create configuration file config/initializers/slack_mailer.rb
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
Slack::Mailer::Configuration.configure do |config|
|
26
|
+
config.templates_path = "#{Rails.root}/app/views/discord_templates/"
|
27
|
+
config.templates_type = 'text'
|
28
|
+
config.erb_in_templates = true
|
29
|
+
config.discord_url = 'https://discord.com/api/webhooks'
|
30
|
+
end
|
31
|
+
```
|
32
|
+
Gem balances messages by hooks. It helps not to reach a message limit through 1 hook per 1 second.
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
app/discord_mailers/user_mailer.rb
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
class UserMailer < Discord::Mailer
|
40
|
+
|
41
|
+
def created(user)
|
42
|
+
@user = user
|
43
|
+
mail(webhook_id: 'webhook_id', webhook_key: 'webhook_key', from: 'from')
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
Mailer will be using template *app/views/discord_templates/user_mailer/created.text.erb*
|
50
|
+
|
51
|
+
```text
|
52
|
+
Name: <%= @user.name %>
|
53
|
+
Full name: <%= @user.full_name %>
|
54
|
+
Phone: <%= @user.phone %>
|
55
|
+
```
|
56
|
+
#### Sending messages
|
57
|
+
```ruby
|
58
|
+
UserMailer.created(user)
|
59
|
+
```
|
60
|
+
|
61
|
+
Sending small messages(one line message)
|
62
|
+
```ruby
|
63
|
+
Discord::Mailer.send_message('webhook_id, 'webhook_key', 'name', 'message)
|
64
|
+
```
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "discord_mailer"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative 'lib/discord_mailer/version'
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "discord_mailer"
|
5
|
+
spec.version = DiscordMailer::VERSION
|
6
|
+
spec.authors = ["Mishel"]
|
7
|
+
spec.email = ["ovasapyan.mn@gmail.com"]
|
8
|
+
|
9
|
+
spec.summary = %q{This gem make more comfortable working with discord}
|
10
|
+
spec.description = %q{This gem make more comfortable working with discord}
|
11
|
+
spec.homepage = 'https://github.com/wwwermishel/discord_mailer'
|
12
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
13
|
+
|
14
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
15
|
+
spec.metadata["source_code_uri"] = 'https://github.com/wwwermishel/discord_mailer'
|
16
|
+
spec.metadata["changelog_uri"] = 'https://github.com/wwwermishel/discord_mailer'
|
17
|
+
|
18
|
+
# Specify which files should be added to the gem when it is released.
|
19
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
21
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
|
+
end
|
23
|
+
spec.bindir = "exe"
|
24
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
|
+
spec.require_paths = ["lib"]
|
26
|
+
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.1.a"
|
28
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
+
# spec.add_development_dependency "binding.pry"
|
30
|
+
spec.add_dependency "rest-client"
|
31
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Discord
|
2
|
+
class Mailer
|
3
|
+
class Configuration
|
4
|
+
|
5
|
+
attr_accessor :templates_path, :templates_type, :erb_in_templates, :discord_url
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@templates_path = nil
|
9
|
+
@templates_type = nil
|
10
|
+
@erb_in_templates = false
|
11
|
+
@discord_url = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def config
|
16
|
+
@configuration ||= Discord::Mailer::Configuration.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def reset
|
20
|
+
@configuration = Discord::Mailer::Configuration.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure
|
24
|
+
yield(config)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative "discord_mailer/version"
|
2
|
+
require_relative 'discord_mailer/configuration'
|
3
|
+
require 'erb'
|
4
|
+
|
5
|
+
module Discord
|
6
|
+
class Error < StandardError
|
7
|
+
EMPTY_WEBHOOK_ID = 'Webheook id is empty!'
|
8
|
+
EMPTY_WEBHOOK_KEY = 'Webhook key is empty!'
|
9
|
+
EMPTY_MESSSAGE = 'Message text is empty!'
|
10
|
+
|
11
|
+
end
|
12
|
+
class Mailer
|
13
|
+
class << self
|
14
|
+
def method_missing(method, *args)
|
15
|
+
self.new.send(method, *args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def send_message(webhook_id = '', webhook_key = '', name = '', message = '')
|
19
|
+
raise Error::EMPTY_MESSSAGE if message.empty?
|
20
|
+
discord_url = "#{Discord::Mailer::Configuration.config.discord_url}/#{webhook_id}/#{webhook_key}"
|
21
|
+
|
22
|
+
RestClient.post(discord_url, {"username" => name,"content" => message})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def mail(webhook_id: nil, webhook_key: nil, from: nil)
|
27
|
+
raise Error::EMPTY_WEBHOOK_ID if webhook_id.empty?
|
28
|
+
raise Error::EMPTY_WEBHOOK_KEY if webhook_key.empty?
|
29
|
+
|
30
|
+
template_name = caller_locations.first.base_label
|
31
|
+
message = collect_message(self.template_path(template_name), _instance_variables)
|
32
|
+
self.class.send(:send_message, webhook_id, webhook_key, from, message)
|
33
|
+
end
|
34
|
+
|
35
|
+
def _instance_variables
|
36
|
+
instance_variables.map { |instance_variable|
|
37
|
+
{ instance_variable => self.instance_variable_get(instance_variable) }
|
38
|
+
}.reduce(:merge)
|
39
|
+
end
|
40
|
+
|
41
|
+
def template_path(template_name)
|
42
|
+
template = "#{template_name}.#{Discord::Mailer::Configuration.config.templates_type}"
|
43
|
+
template << '.erb' if Discord::Mailer::Configuration.config.erb_in_templates
|
44
|
+
|
45
|
+
"#{Discord::Mailer::Configuration.config.templates_path}/#{self.class.name.underscore}/#{template}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def collect_message(template_path, instance_variables)
|
49
|
+
ERB.new(File.read(template_path)).result(binding)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: discord_mailer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mishel
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-06-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.a
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.a
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: This gem make more comfortable working with discord
|
56
|
+
email:
|
57
|
+
- ovasapyan.mn@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- Gemfile
|
66
|
+
- Gemfile.lock
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- bin/console
|
70
|
+
- bin/setup
|
71
|
+
- discord_mailer.gemspec
|
72
|
+
- lib/discord_mailer.rb
|
73
|
+
- lib/discord_mailer/configuration.rb
|
74
|
+
- lib/discord_mailer/version.rb
|
75
|
+
homepage: https://github.com/wwwermishel/discord_mailer
|
76
|
+
licenses: []
|
77
|
+
metadata:
|
78
|
+
homepage_uri: https://github.com/wwwermishel/discord_mailer
|
79
|
+
source_code_uri: https://github.com/wwwermishel/discord_mailer
|
80
|
+
changelog_uri: https://github.com/wwwermishel/discord_mailer
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.3.0
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubygems_version: 3.1.4
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: This gem make more comfortable working with discord
|
100
|
+
test_files: []
|