Sha256: 7042c5d2a820db61631563760d68cbe744be479e985fbc77902a3f41035f2706

Contents?: true

Size: 1.39 KB

Versions: 9

Compression:

Stored size: 1.39 KB

Contents

module Rpush
  class ReflectionCollection
    class NoSuchReflectionError < StandardError; end

    REFLECTIONS = [
      :apns_feedback, :notification_enqueued, :notification_delivered,
      :notification_failed, :notification_will_retry, :gcm_delivered_to_recipient,
      :gcm_failed_to_recipient, :gcm_canonical_id, :gcm_invalid_registration_id,
      :error, :adm_canonical_id, :adm_failed_to_recipient,
      :tcp_connection_lost, :ssl_certificate_will_expire, :ssl_certificate_revoked,
      :notification_id_will_retry, :notification_id_failed
    ]

    DEPRECATIONS = {}

    REFLECTIONS.each do |reflection|
      class_eval(<<-RUBY, __FILE__, __LINE__)
        def #{reflection}(*args, &blk)
          raise "block required" unless block_given?
          reflections[:#{reflection}] = blk
        end
      RUBY
    end

    def __dispatch(reflection, *args)
      reflection = reflection.to_sym

      unless REFLECTIONS.include?(reflection)
        fail NoSuchReflectionError, reflection
      end

      if DEPRECATIONS.key?(reflection)
        replacement, removal_version = DEPRECATIONS[reflection]
        Rpush::Deprecation.warn("#{reflection} is deprecated and will be removed in version #{removal_version}. Use #{replacement} instead.")
      end

      reflections[reflection].call(*args) if reflections[reflection]
    end

    private

    def reflections
      @reflections ||= {}
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rpush-2.4.0-java lib/rpush/reflection_collection.rb
rpush-2.4.0 lib/rpush/reflection_collection.rb
rpush-2.3.2-java lib/rpush/reflection_collection.rb
rpush-2.3.2 lib/rpush/reflection_collection.rb
rpush-2.3.1-java lib/rpush/reflection_collection.rb
rpush-2.3.1 lib/rpush/reflection_collection.rb
rpush-2.3.0-java lib/rpush/reflection_collection.rb
rpush-2.3.0 lib/rpush/reflection_collection.rb
rpush-2.3.0.rc1 lib/rpush/reflection_collection.rb