class Mailgun::OptInHandler

def self.generate_hash(mailing_list, secret_app_id, recipient_address)

Returns:
  • (String) - A url encoded URL suffix hash.

Parameters:
  • recipient_address (Hash) -- The address of the user that should be subscribed.
  • secret_app_id (String) -- A secret passphrase used as a constant for the hash.
  • mailing_list (String) -- The mailing list the user should be subscribed to.
def self.generate_hash(mailing_list, secret_app_id, recipient_address)
  inner_payload = { 'l' => mailing_list, 'r' => recipient_address }
  inner_payload_encoded = Base64.encode64(JSON.generate(inner_payload))
  sha1_digest = OpenSSL::Digest.new('sha1')
  digest = OpenSSL::HMAC.hexdigest(sha1_digest, secret_app_id, inner_payload_encoded)
  outer_payload = { 'h' => digest, 'p' => inner_payload_encoded }
  outer_payload_encoded = Base64.encode64(JSON.generate(outer_payload))
  CGI.escape(outer_payload_encoded)
end