Skip to content

Instantly share code, notes, and snippets.

@jkassemi
Forked from isaiahbaca/gist:ceecadcb1d47ac7208a0
Created September 15, 2014 23:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jkassemi/443345f1226d0ff2d844 to your computer and use it in GitHub Desktop.
Save jkassemi/443345f1226d0ff2d844 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'httpi' # Use whatever http system you've already started using
require 'json'
require 'openssl'
require 'oj'
class Signature
class << self
def signature(rails_request)
payload = "https://dashboard.atpay.com/email_transactions/" +
rails_request.request_parameters.keys.sort.collect { |k|
[k, rails_request.params[k]].join("")
}.join("")
sigs = []
mandrill_keys = "Q6AsTVFGRDyKpdK_VrBaNw,d9cbV1rY9FKoZzDkPyBVnw,MdwJgD8yJDjYsrwMvRaTHA,63tyGd-l1FkpM4mnnlVXYg,L21ClyYjdKobv9X9KnRe_g".split(",")
mandrill_keys.each do |x|
sigs << Base64.encode64("#{OpenSSL::HMAC.digest('sha1', x, payload)}").strip
end
sigs
end
end
end
mandrill_events = <<EOD
[{"event":"inbound","msg":{}}]
EOD
puts mandrill_events
class RailsRequest < Struct.new(:request_parameters)
def params
request_parameters
end
end
mandrill_events = Oj.dump(Oj.load(mandrill_events))
rails_request = RailsRequest.new({ mandrill_events: mandrill_events })
signature = Signature.signature(rails_request)
request = HTTPI::Request.new("https://dashboard.atpay.com/email_transactions/")
request.body = { mandrill_events: mandrill_events }
request.headers["X-Mandrill-Signature"] = "LnD7n+C2hxeoLVnLaMmIFE7EJ/s="
request.headers["HTTP_X_MANDRILL_SIGNATURE"] = "LnD7n+C2hxeoLVnLaMmIFE7EJ/s="
request.headers["X-Mandrill-Signature"] = signature
request.headers["HTTP_X_MANDRILL_SIGNATURE"] = signature
response = HTTPI.post(request)
puts response.code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment