class Backup::Notifier::HttpPost

Attributes

headers[RW]

Hash of additional HTTP headers to send.

This notifier sets the following headers: { 'User-Agent' => “Backup/#{ Backup::VERSION }”,

'Content-Type' => 'x-www-form-urlencoded' }

'Content-Type' may not be changed. 'User-Agent' may be overridden or omitted by setting it to nil. e.g. { 'Authorization' => 'my_auth_info', 'User-Agent' => nil }

params[RW]

Hash of additional POST parameters to send.

This notifier will set two parameters: { 'status' => 'success|warning|failure',

'message' => '[Backup::(Success|Warning|Failure)] label (trigger)' }

'status' may not be changed. 'message' may be overridden or omitted by setting a nil value. e.g. { 'auth_token' => 'my_token', 'message' => nil }

ssl_ca_file[RW]

Path to a cacert.pem file to use for ssl_verify_peer.

This is provided (via Excon), but may be specified if needed.

ssl_verify_peer[RW]

Verify the server's certificate when using SSL.

This will default to true for most systems. It may be forced by setting to true, or disabled by setting to false.

success_codes[RW]

Successful HTTP Status Code(s) that should be returned.

This may be a single code or an Array of acceptable codes. e.g. [200, 201, 204]

If any other response code is returned, the request will be retried using `max_retries` and `retry_waitsec`.

Default: 200

uri[RW]

URI to post notification to.

URI scheme may be `http` or `https`.

If Basic Authentication is needed, supply the `user:password` in the URI. e.g. 'user:pass@www.example.com/path'

Port may also be supplied. e.g. 'www.example.com:8080/path'

Public Class Methods

new(model, &block) click to toggle source
Calls superclass method Backup::Notifier::Base.new
# File lib/backup/notifier/http_post.rb, line 68
def initialize(model, &block)
  super
  instance_eval(&block) if block_given?

  @headers ||= {}
  @params  ||= {}
  @success_codes ||= 200
end

Private Instance Methods

notify!(status) click to toggle source

Notify the user of the backup operation results.

`status` indicates one of the following:

`:success` : The backup completed successfully. : Notification will be sent if `on_success` is `true`.

`:warning` : The backup completed successfully, but warnings were logged. : Notification will be sent if `on_warning` or `on_success` is `true`.

`:failure` : The backup operation failed. : Notification will be sent if `on_warning` or `on_success` is `true`.

# File lib/backup/notifier/http_post.rb, line 96
def notify!(status)
  msg = message.call(model, :status => status_data_for(status))

  opts = {
    :headers => { 'User-Agent' => "Backup/#{ VERSION }" }.
        merge(headers).reject {|k,v| v.nil? }.
        merge('Content-Type' => 'application/x-www-form-urlencoded'),
    :body => URI.encode_www_form({ 'message' => msg }.
        merge(params).reject {|k,v| v.nil? }.
        merge('status' => status.to_s)),
    :expects => success_codes # raise error if unsuccessful
  }
  opts.merge!(:ssl_verify_peer => ssl_verify_peer) unless ssl_verify_peer.nil?
  opts.merge!(:ssl_ca_file => ssl_ca_file) if ssl_ca_file

  Excon.post(uri, opts)
end