Class: AhoyEmail::Utils

Inherits:
Object
  • Object
show all
Defined in:
lib/ahoy_email/utils.rb

Constant Summary collapse

OPTION_KEYS =
{
  message: %i(message mailer user extra),
  utm_params: %i(utm_source utm_medium utm_term utm_content utm_campaign),
  click: %i(campaign url_options unsubscribe_links)
}

Class Method Summary collapse

Class Method Details

.publish(name, event) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ahoy_email/utils.rb', line 17

def publish(name, event)
  method_name = "track_#{name}"
  AhoyEmail.subscribers.each do |subscriber|
    subscriber = subscriber.new if subscriber.is_a?(Class)
    if subscriber.respond_to?(method_name)
      subscriber.send(method_name, event.dup)
    elsif name == :click && subscriber.respond_to?(:click)
      # legacy
      subscriber.send(:click, event.dup)
    end
  end
end

.secret_tokenObject



30
31
32
# File 'lib/ahoy_email/utils.rb', line 30

def secret_token
  AhoyEmail.secret_token || (raise "Secret token is empty")
end

.signature(token:, campaign:, url:) ⇒ Object



10
11
12
13
14
15
# File 'lib/ahoy_email/utils.rb', line 10

def signature(token:, campaign:, url:)
  # encode and join with a character outside encoding
  data = [token, campaign, url].map { |v| Base64.strict_encode64(v.to_s) }.join("|")

  Base64.urlsafe_encode64(OpenSSL::HMAC.digest("SHA256", secret_token, data), padding: false)
end