Sha256: bb5bbb2033bce272757fece9c2a32b6a314bdb0dd1519870b5de92d616bc4e73
Contents?: true
Size: 1.76 KB
Versions: 1
Compression:
Stored size: 1.76 KB
Contents
require "net/https" require "uri" module Bugsnag module Delivery class Synchronous HEADERS = {"Content-Type" => "application/json"} class << self def deliver(url, body, configuration) begin response = request(url, body, configuration) Bugsnag.debug("Notification to #{url} finished, response was #{response.code}, payload was #{body}") rescue StandardError => e # KLUDGE: Since we don't re-raise http exceptions, this breaks rspec raise if e.class.to_s == "RSpec::Expectations::ExpectationNotMetError" Bugsnag.warn("Notification to #{url} failed, #{e.inspect}") Bugsnag.warn(e.backtrace) end end private def request(url, body, configuration) uri = URI.parse(url) if configuration.proxy_host http = Net::HTTP.new(uri.host, uri.port, configuration.proxy_host, configuration.proxy_port, configuration.proxy_user, configuration.proxy_password) else http = Net::HTTP.new(uri.host, uri.port) end http.read_timeout = configuration.timeout http.open_timeout = configuration.timeout if uri.scheme == "https" http.use_ssl = true # the default in 1.9+, but required for 1.8 http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_file = configuration.ca_file if configuration.ca_file end request = Net::HTTP::Post.new(path(uri), HEADERS) request.body = body http.request(request) end def path(uri) uri.path == "" ? "/" : uri.path end end end end end Bugsnag::Delivery.register(:synchronous, Bugsnag::Delivery::Synchronous)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bugsnag-5.5.0 | lib/bugsnag/delivery/synchronous.rb |