Class: Discord::Mailer

Inherits:
Object
  • Object
show all
Defined in:
lib/discord_mailer.rb,
lib/discord_mailer/configuration.rb

Defined Under Namespace

Classes: Configuration

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.method_missing(method, *args) ⇒ Object



14
15
16
# File 'lib/discord_mailer.rb', line 14

def method_missing(method, *args)
  self.new.send(method, *args)
end

.send_message(webhook_id = '', webhook_key = '', name = '', message = '') ⇒ Object



18
19
20
21
22
23
# File 'lib/discord_mailer.rb', line 18

def send_message(webhook_id = '', webhook_key = '', name = '', message = '')
  raise Error::EMPTY_MESSSAGE if message.empty?
  discord_url = "#{Discord::Mailer::Configuration.config.discord_url}/#{webhook_id}/#{webhook_key}"

  RestClient.post(discord_url, {"username" => name,"content" => message})
end

Instance Method Details

#_instance_variablesObject



35
36
37
38
39
# File 'lib/discord_mailer.rb', line 35

def _instance_variables
  instance_variables.map { |instance_variable|
    { instance_variable => self.instance_variable_get(instance_variable) }
  }.reduce(:merge)
end

#collect_message(template_path, instance_variables) ⇒ Object



48
49
50
# File 'lib/discord_mailer.rb', line 48

def collect_message(template_path, instance_variables)
  ERB.new(File.read(template_path)).result(binding)
end

#mail(webhook_id: nil, webhook_key: nil, from: nil) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/discord_mailer.rb', line 26

def mail(webhook_id: nil, webhook_key: nil, from: nil)
  raise Error::EMPTY_WEBHOOK_ID if webhook_id.empty?
  raise Error::EMPTY_WEBHOOK_KEY if webhook_key.empty?

  template_name = caller_locations.first.base_label
  message = collect_message(self.template_path(template_name), _instance_variables)
  self.class.send(:send_message, webhook_id, webhook_key, from, message)
end

#template_path(template_name) ⇒ Object



41
42
43
44
45
46
# File 'lib/discord_mailer.rb', line 41

def template_path(template_name)
  template = "#{template_name}.#{Discord::Mailer::Configuration.config.templates_type}"
  template << '.erb' if Discord::Mailer::Configuration.config.erb_in_templates

  "#{Discord::Mailer::Configuration.config.templates_path}/#{self.class.name.underscore}/#{template}"
end