Class: Batbugger::Sender

Inherits:
Object
  • Object
show all
Defined in:
lib/batbugger/sender.rb

Constant Summary collapse

NOTICES_URI =
'/v1/notices/'.freeze
HTTP_ERRORS =
[Timeout::Error,
Errno::EINVAL,
Errno::ECONNRESET,
EOFError,
Net::HTTPBadResponse,
Net::HTTPHeaderSyntaxError,
Net::ProtocolError,
Errno::ECONNREFUSED].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Sender

Returns a new instance of Sender.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/batbugger/sender.rb', line 13

def initialize(options = {})
  [ :api_key,
    :proxy_host,
    :proxy_port,
    :proxy_user,
    :proxy_pass,
    :protocol,
    :host,
    :port,
    :secure,
    :use_system_ssl_cert_chain,
    :http_open_timeout,
    :http_read_timeout
  ].each do |option|
    instance_variable_set("@#{option}", options[option])
  end
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def api_key
  @api_key
end

#hostObject (readonly)

Returns the value of attribute host.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def host
  @host
end

#http_open_timeoutObject (readonly)

Returns the value of attribute http_open_timeout.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def http_open_timeout
  @http_open_timeout
end

#http_read_timeoutObject (readonly)

Returns the value of attribute http_read_timeout.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def http_read_timeout
  @http_read_timeout
end

#portObject (readonly)

Returns the value of attribute port.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def port
  @port
end

#protocolObject (readonly)

Returns the value of attribute protocol.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def protocol
  @protocol
end

#proxy_hostObject (readonly)

Returns the value of attribute proxy_host.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def proxy_host
  @proxy_host
end

#proxy_passObject (readonly)

Returns the value of attribute proxy_pass.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def proxy_pass
  @proxy_pass
end

#proxy_portObject (readonly)

Returns the value of attribute proxy_port.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def proxy_port
  @proxy_port
end

#proxy_userObject (readonly)

Returns the value of attribute proxy_user.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def proxy_user
  @proxy_user
end

#secureObject (readonly) Also known as: secure?

Returns the value of attribute secure.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def secure
  @secure
end

#use_system_ssl_cert_chainObject (readonly) Also known as: use_system_ssl_cert_chain?

Returns the value of attribute use_system_ssl_cert_chain.



59
60
61
# File 'lib/batbugger/sender.rb', line 59

def use_system_ssl_cert_chain
  @use_system_ssl_cert_chain
end

Instance Method Details

#send_to_batbugger(notice) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/batbugger/sender.rb', line 31

def send_to_batbugger(notice)
  data = notice.is_a?(String) ? notice : notice.to_json

  http     = setup_http_connection
  headers  = HEADERS

  headers.merge!({ 'X-API-Key' => api_key}) unless api_key.nil?

  response = begin
               http.post(url.path, data, headers)
             rescue *HTTP_ERRORS => e
               log(:error, "Unable to contact the Batbugger server. HTTP Error=#{e}")
               nil
             end

  case response
  when Net::HTTPSuccess then
    log(Batbugger.configuration.debug ? :info : :debug, "Success: #{response.class}", response, data)
    JSON.parse(response.body)['id']
  else
    log(:error, "Failure: #{response.class}", response, data)
    nil
  end
rescue => e
  log(:error, "[Batbugger::Sender#send_to_batbugger] Error: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}")
  nil
end