class Firebase::Messaging::Request::For
Constants
- TOPIC_REGEX
Attributes
registration_ids[R]
to[R]
topics[R]
Public Class Methods
new(directions)
click to toggle source
# File lib/firebase/messaging/request/for.rb, line 9 def initialize(directions) if directions.is_a? String @to = directions elsif directions.is_a? Array if directions.flatten.any? { |direction| TOPIC_REGEX === direction } if directions.flatten.size == 1 @to = directions.first else @topics = directions end else @registration_ids = directions end end end
Public Instance Methods
payload()
click to toggle source
# File lib/firebase/messaging/request/for.rb, line 25 def payload return { to: @to } if @to return { registration_ids: @registration_ids } if @registration_ids conditions = @topics.inject([]) do |arr, topic| if topic.is_a? Array arr.push "(#{or_condition(topic)})" else arr.push topic_condition(topic) end end { condition: conditions.join(' && ') } end
type()
click to toggle source
# File lib/firebase/messaging/request/for.rb, line 40 def type if (@to && !(TOPIC_REGEX === @to)) || @registration_ids :down_stream_http_message else :topic_message end end
Private Instance Methods
or_condition(or_topics)
click to toggle source
# File lib/firebase/messaging/request/for.rb, line 50 def or_condition(or_topics) or_topics.select { |topic| TOPIC_REGEX === topic } .map { |topic| topic_condition(topic) } .join(' || ') end
topic_condition(topic)
click to toggle source
# File lib/firebase/messaging/request/for.rb, line 56 def topic_condition(topic) topic.gsub(TOPIC_REGEX, '\'\1\' in topics') end