class Raven::Transports::HTTP

Attributes

adapter[RW]
conn[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method Raven::Transports::Transport.new
# File lib/raven/transports/http.rb, line 11
def initialize(*args)
  super
  self.adapter = configuration.http_adapter || Faraday.default_adapter
  self.conn = set_conn
end

Public Instance Methods

send_event(auth_header, data, options = {}) click to toggle source
# File lib/raven/transports/http.rb, line 17
def send_event(auth_header, data, options = {})
  project_id = configuration[:project_id]
  path = configuration[:path] + "/"

  response = conn.post "#{path}api/#{project_id}/store/" do |req|
    req.headers['Content-Type'] = options[:content_type]
    req.headers['X-Sentry-Auth'] = auth_header
    req.body = data
  end
  Raven.logger.warn "Error from Sentry server (#{response.status}): #{response.body}" unless response.status == 200
  response
end

Private Instance Methods

set_conn() click to toggle source
# File lib/raven/transports/http.rb, line 32
def set_conn
  verify_configuration

  Raven.logger.debug "Raven HTTP Transport connecting to #{configuration.server}"

  ssl_configuration = configuration.ssl || {}
  ssl_configuration[:verify] = configuration.ssl_verification
  ssl_configuration[:ca_file] = configuration.ssl_ca_file

  conn = Faraday.new(
    :url => configuration[:server],
    :ssl => ssl_configuration
  ) do |builder|
    builder.adapter(*adapter)
  end

  conn.headers[:user_agent] = "sentry-ruby/#{Raven::VERSION}"

  conn.options[:proxy] = configuration.proxy if configuration.proxy
  conn.options[:timeout] = configuration.timeout if configuration.timeout
  conn.options[:open_timeout] = configuration.open_timeout if configuration.open_timeout

  conn
end