Class: Pulse::Sender
Overview
Sends out the notice to Pulse
Constant Summary collapse
- NOTICES_URI =
'/notifier_api/v2/notices/'.freeze
- HTTP_ERRORS =
[Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, Errno::ECONNREFUSED].freeze
Instance Attribute Summary collapse
-
#host ⇒ Object
readonly
Returns the value of attribute host.
-
#http_open_timeout ⇒ Object
readonly
Returns the value of attribute http_open_timeout.
-
#http_read_timeout ⇒ Object
readonly
Returns the value of attribute http_read_timeout.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
-
#proxy_host ⇒ Object
readonly
Returns the value of attribute proxy_host.
-
#proxy_pass ⇒ Object
readonly
Returns the value of attribute proxy_pass.
-
#proxy_port ⇒ Object
readonly
Returns the value of attribute proxy_port.
-
#proxy_user ⇒ Object
readonly
Returns the value of attribute proxy_user.
-
#secure ⇒ Object
(also: #secure?)
readonly
Returns the value of attribute secure.
-
#use_system_ssl_cert_chain ⇒ Object
(also: #use_system_ssl_cert_chain?)
readonly
Returns the value of attribute use_system_ssl_cert_chain.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Sender
constructor
A new instance of Sender.
-
#send_to_pulse(notice) ⇒ Object
Sends the notice data off to Pulse for processing.
Constructor Details
#initialize(options = {}) ⇒ Sender
Returns a new instance of Sender.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/pulse/sender.rb', line 15 def initialize( = {}) [ :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}", [option]) end end |
Instance Attribute Details
#host ⇒ Object (readonly)
Returns the value of attribute host.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def host @host end |
#http_open_timeout ⇒ Object (readonly)
Returns the value of attribute http_open_timeout.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def http_open_timeout @http_open_timeout end |
#http_read_timeout ⇒ Object (readonly)
Returns the value of attribute http_read_timeout.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def http_read_timeout @http_read_timeout end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def port @port end |
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def protocol @protocol end |
#proxy_host ⇒ Object (readonly)
Returns the value of attribute proxy_host.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def proxy_host @proxy_host end |
#proxy_pass ⇒ Object (readonly)
Returns the value of attribute proxy_pass.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def proxy_pass @proxy_pass end |
#proxy_port ⇒ Object (readonly)
Returns the value of attribute proxy_port.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def proxy_port @proxy_port end |
#proxy_user ⇒ Object (readonly)
Returns the value of attribute proxy_user.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def proxy_user @proxy_user end |
#secure ⇒ Object (readonly) Also known as: secure?
Returns the value of attribute secure.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def secure @secure end |
#use_system_ssl_cert_chain ⇒ Object (readonly) Also known as: use_system_ssl_cert_chain?
Returns the value of attribute use_system_ssl_cert_chain.
71 72 73 |
# File 'lib/pulse/sender.rb', line 71 def use_system_ssl_cert_chain @use_system_ssl_cert_chain end |
Instance Method Details
#send_to_pulse(notice) ⇒ Object
Sends the notice data off to Pulse for processing.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pulse/sender.rb', line 35 def send_to_pulse(notice) data = notice.respond_to?(:to_xml) ? notice.to_xml : notice http = setup_http_connection response = begin http.post(url.path, data, HEADERS) rescue *HTTP_ERRORS => e log :level => :error, :message => "Unable to contact the Pulse server. HTTP Error=#{e}" nil end case response when Net::HTTPSuccess then log :level => :info, :message => "Success: #{response.class}", :response => response else log :level => :error, :message => "Failure: #{response.class}", :response => response, :notice => notice end if response && response.respond_to?(:body) error_id = response.body.match(%r{<id[^>]*>(.*?)</id>}) error_id[1] if error_id end rescue => e log :level => :error, :message => "[Pulse::Sender#send_to_pulse] Cannot send notification. Error: #{e.class}" + " - #{e.}\nBacktrace:\n#{e.backtrace.join("\n\t")}" nil end |