Sha256: 6f61c198fc9888b6ce06bd012693bab545ed35c96d4fc63f0017510bd0dcdcfc

Contents?: true

Size: 1.77 KB

Versions: 13

Compression:

Stored size: 1.77 KB

Contents

require "uri"

module Backup
  module Notifier
    class Prowl < Base
      ##
      # Application name
      # Tell something like your server name. Example: "Server1 Backup"
      attr_accessor :application

      ##
      # API-Key
      # Create a Prowl account and request an API key on prowlapp.com.
      attr_accessor :api_key

      def initialize(model, &block)
        @message =
          lambda do |m, _|
            "#{m.label} (#{m.trigger})"
          end

        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(status)
      end

      def send_message(status)
        uri = "https://api.prowlapp.com/publicapi/add"
        status_data = status_data_for(status)
        data = {
          application: application,
          apikey: api_key,
          event: status_data[:message],
          description: message.call(model, status: status_data)
        }
        options = {
          headers: { "Content-Type" => "application/x-www-form-urlencoded" },
          body: URI.encode_www_form(data)
        }
        options[:expects] = 200 # raise error if unsuccessful
        Excon.post(uri, options)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 4 rubygems

Version Path
backup-5.0.0.beta.3 lib/backup/notifier/prowl.rb
backedup-5.0.0.beta.5 lib/backup/notifier/prowl.rb
backedup-5.0.0.beta.4 lib/backup/notifier/prowl.rb
backedup-5.0.0.beta.3 lib/backup/notifier/prowl.rb
ext_backup-5.0.0.beta.2.1 lib/backup/notifier/prowl.rb
ext_backup-5.0.0.beta.2.ext.0.1.2 lib/backup/notifier/prowl.rb
ext_backup-5.0.0.beta.2.ext.0.1.1 lib/backup/notifier/prowl.rb
ext_backup-5.0.0.beta.2.ext.0.1.0 lib/backup/notifier/prowl.rb
backup-5.0.0.beta.2 lib/backup/notifier/prowl.rb
backup-5.0.0.beta.1 lib/backup/notifier/prowl.rb
backup-bouchard-4.4.4 lib/backup/notifier/prowl.rb
backup-bouchard-4.4.2 lib/backup/notifier/prowl.rb
backup-bouchard-4.4.1 lib/backup/notifier/prowl.rb