Sha256: 11471d21b8de5c5490783c2818e06aee29471c87df220313f06aab34fe9ed641
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
class Bullhorn module Sender extend self def serialize(str) Base64.encode64(str.to_json).strip end def notify(exception, env) Net::HTTP.post_form(URI(url), { :api_key => api_key, :message => exception.message, :backtrace => serialize(exception.backtrace), :env => serialize(whitelist(env)), :request_body => serialize(whitelist(request_body(env))), :sha1 => sha1(exception) }) end protected def request_body(env) if io = env['rack.input'] io.rewind if io.respond_to?(:rewind) io.read end # TODO : only rescue the expected exceptions rescue "" end def whitelist(str_or_hash) case str_or_hash when Hash str_or_hash.dup.tap do |h| h.keys.each do |key| if h[key].respond_to?(:gsub) h[key] = sanitize(h[key]) else h[key] = h[key].inspect end end end when String sanitize(str_or_hash) end end def sanitize(str) str.dup.tap do |ret| @filters.each do |filter| ret.gsub!(Regexp.new(FILTERING % filter)) { |m| m.gsub($1, '[FILTERED]') } end end end def sha1(exception) Digest::SHA1.hexdigest(exception.message + exception.backtrace.inspect) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bullhorn-0.0.6 | lib/bullhorn/sender.rb |
bullhorn-0.0.4 | lib/bullhorn/sender.rb |