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 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
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 2.7.2
6
+ before_install: gem install bundler -v 2.1.4
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in discord_mailer.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "rspec", "~> 3.0"
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
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
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,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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,3 @@
1
+ module DiscordMailer
2
+ VERSION = "0.1.0"
3
+ 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: []