class Firepush::Recipient::Builder

Attributes

_args[R]

Public Class Methods

build(args) click to toggle source

@param args [Hash] @option args [Hash] :topic @option args [Hash] :token @option args [Hash] :condition

# File lib/firepush/recipient/builder.rb, line 12
def self.build(args)
  new(args).build
end

Private Class Methods

new(args) click to toggle source

@private @see .build

# File lib/firepush/recipient/builder.rb, line 18
def initialize(args)
  @_args = args

  check_args!
end

Public Instance Methods

build() click to toggle source

@return [Firepush::Recipient::Base]

# File lib/firepush/recipient/builder.rb, line 26
def build
  case
  when topic?
    Topic.new(_args.fetch(:topic))
  when token?
    Token.new(_args.fetch(:token))
  when condition?
    Condition.new(_args.fetch(:condition))
  end
end

Private Instance Methods

check_args!() click to toggle source

@private @raise [ArgumentError]

# File lib/firepush/recipient/builder.rb, line 43
def check_args!
  count = TYPES.reduce(0) do |sum, type|
    sum += 1 if _args.key?(type)
    sum
  end
  return if count == 1

  raise ::ArgumentError.new("Have to set one of :topic, :token, or :condition")
end
condition?() click to toggle source

@private @return [Boolean]

# File lib/firepush/recipient/builder.rb, line 55
def condition?
  _args.key?(:condition)
end
token?() click to toggle source

@private @return [Boolean]

# File lib/firepush/recipient/builder.rb, line 61
def token?
  _args.key?(:token)
end
topic?() click to toggle source

@private @return [Boolean]

# File lib/firepush/recipient/builder.rb, line 67
def topic?
  _args.key?(:topic)
end