1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
# frozen_string_literal: true
require "httparty"
module ExceptionNotifier
class GoogleChatNotifier < BaseNotifier
def call(exception, opts = {})
options = base_options.merge(opts)
formatter = Formatter.new(exception, options)
HTTParty.post(
options[:webhook_url],
body: {text: body(exception, formatter)}.to_json,
headers: {"Content-Type" => "application/json"}
)
end
private
def body(exception, formatter)
text = [
"\nApplication: *#{formatter.app_name}*",
formatter.subtitle,
"",
formatter.title,
"*#{exception.message.tr("`", "'")}*"
]
if (request = formatter.request_message.presence)
text << ""
text << "*Request:*"
text << request
end
if (backtrace = formatter.backtrace_message.presence)
text << ""
text << "*Backtrace:*"
text << backtrace
end
text.compact.join("\n")
end
end
end
|