Sha256: b15ab49a933e687f87cefbf2d71e5914e66b3081ed9e18a5d0a1fb5167f8b946

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

module Silvermoon

  autoload :Notifier, 'silvermoon/notifier'

  autoload :ActionControllerExtension, 'silvermoon/action_controller_extension'

  module Notifier
    autoload :Base, 'silvermoon/notifier/base'
    autoload :Facebook, 'silvermoon/notifier/facebook'
    autoload :Twitter, 'silvermoon/notifier/twitter'
  end

  require 'silvermoon/railtie'

  mattr_accessor :loaded_notifiers
  @@loaded_notifiers = Hash.new

  def self.notify(title, content, url, extras = {}, notifiers = [])
    returns = {} 
    notifiers = Notifier.config.keys if notifiers.empty?
    notifiers.each do |notifier|
      loaded_notifier = loaded_notifiers[notifier] || load_notifier(notifier)
      begin
        returns[notifier] = loaded_notifier.notify(title, content, url, extras)
      rescue ::Exception => e
        returns[notifier] = e
      end
    end
    returns
  end

  def self.add_notifier(notifier)
    load_notifier(notifier)
  end

  def self.clear_notifiers!
    @@loaded_notifiers = Hash.new
  end

#  def self.setup(&block)
#    self.instance_exec(&block)
#  end

  private

  def self.load_notifier(notifier)
    return loaded_notifiers[notifier] if loaded_notifiers.has_key?(notifier)
    loaded_notifier = Silvermoon::Notifier.config[notifier]['klass'].constantize.new
    loaded_notifier.identifier = notifier
    loaded_notifiers[notifier] = loaded_notifier
    loaded_notifier
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
silvermoon-0.1 lib/silvermoon.rb