lib/backup/notifier/campfire.rb
require "json"
module Backup
module Notifier
class Campfire < Base
##
# Campfire api authentication token
attr_accessor :api_token
##
# Campfire account's subdomain
attr_accessor :subdomain
##
# Campfire account's room id
attr_accessor :room_id
def initialize(model, &block)
super
instance_eval(&block) if block_given?
end
private
##
# 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`.
#
def notify!(status)
send_message(message.call(model, status: status_data_for(status)))
end
def send_message(message)
uri = "https://#{subdomain}.campfirenow.com/room/#{room_id}/speak.json"
options = {
headers: { "Content-Type" => "application/json" },
body: JSON.dump(
message: { body: message, type: "Textmessage" }
)
}
options[:user] = api_token
options[:password] = "x" # Basic Auth
options[:expects] = 201 # raise error if unsuccessful
Excon.post(uri, options)
end
end
end
end