Sha256: 60a14351f586cb26b3813d934bf636f63eb0383937cf1dca9e0ce49f73c745ef

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

#!/usr/bin/env ruby

require 'flapjack/data/message'

module Flapjack
  module Data
    class Notification

      attr_accessor :event, :type, :max_notified_severity

      def self.for_event(event, opts = {})
        self.new(:event => event,
                 :type => opts[:type],
                 :max_notified_severity => opts[:max_notified_severity])
      end

      def messages(opts = {})
        contacts = opts[:contacts]
        return [] if contacts.nil?
        @messages ||= contacts.collect {|contact|
          contact.media.keys.inject([]) { |ret, mk|
            m = Flapjack::Data::Message.for_contact(:contact => contact)
            m.notification = self
            m.medium  = mk
            m.address = contact.media[mk]
            ret << m
            ret
          }
        }.flatten
      end

      def contents
        @contents ||= {'event_id'              => event.id,
                       'state'                 => event.state,
                       'summary'               => event.summary,
                       'time'                  => event.time,
                       'duration'              => event.duration || nil,
                       'notification_type'     => type,
                       'max_notified_severity' => max_notified_severity }
      end

    private

      def initialize(opts = {})
        raise "Event not passed" unless event = opts[:event]
        @event = event
        @type  = opts[:type]
        @max_notified_severity = opts[:max_notified_severity]
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
flapjack-0.7.5 lib/flapjack/data/notification.rb
flapjack-0.7.4 lib/flapjack/data/notification.rb
flapjack-0.7.3 lib/flapjack/data/notification.rb
flapjack-0.7.2 lib/flapjack/data/notification.rb