Sha256: 5eec5294cf414a45b6abe76733bc73b2e67bf156871c1962e1231de0d6dea59c

Contents?: true

Size: 1.54 KB

Versions: 8

Compression:

Stored size: 1.54 KB

Contents

module FiveMobilePush
  ##
  # Stores supported platform names as defined constants.
  #--
  # Internal to this gem, this class also aids in building and verifying
  # selected platforms.
  class Platform
    ALL        = "all"
    IPHONE     = "iphone"
    BLACKBERRY = "blackberry"
    ANDROID    = "android"

    SUPPORTED_PLATFORMS = [
      ALL,
      IPHONE,
      BLACKBERRY,
      ANDROID
    ]

    # @private
    attr_reader :target_platforms

    # @param [Array<String>, String] target_platforms The platforms being
    #   targeted
    #
    # @private
    def initialize(*target_platforms)
      self.target_platforms = target_platforms
      validate!
    end

    # @return [String] a formatted String with a list of the target platforms
    #
    # @private
    def build_list
      target_platforms.join(',')
    end

    # @param [Array<String>, String] target_platforms The platforms being
    #   targeted
    #
    # @private
    def target_platforms=(*target_platforms)
      @target_platforms = target_platforms.flatten.map(&:to_s)
    end

    # @raise [InvalidPlatformError] raised when an invalid target platform has been
    #   selected
    #
    # @private
    def validate!
      validates_target_platforms
    end

    private

    def invalid_target_platforms
      target_platforms - SUPPORTED_PLATFORMS
    end

    def validates_target_platforms
      unless invalid_target_platforms.empty?
        raise FiveMobilePush::InvalidPlatformError, "The following platforms are invalid: #{invalid_target_platforms}"
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
five_mobile_push-0.4.7 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.6 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.5 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.4-x86_64-darwin-10 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.3 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.2 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.1 lib/five_mobile_push/platform.rb
five_mobile_push-0.4.0 lib/five_mobile_push/platform.rb