class DeviceCloud::PushNotification::Message

Constants

KNOWN_TOPICS

Attributes

file_data[RW]
group[RW]
operation[RW]
replay[RW]
timestamp[RW]
topic[RW]

Public Class Methods

new(attributes = {}) click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 16
def initialize(attributes = {})
  attributes.each do |name, value|
    if name == 'FileData'
      @file_data = value
    else
      send("#{name}=", value)
    end
  end
  DeviceCloud.logger.info "DeviceCloud::PushNotification::Message Invalid (no FileData) - #{topic}" unless valid?
end
parse_raw_messages(raw_message_data) click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 7
def self.parse_raw_messages(raw_message_data)
  if raw_message_data.is_a? Array
    messages = raw_message_data.map {|message| new(message) }
  else
    messages = [new(raw_message_data)]
  end
  messages
end

Public Instance Methods

no_content?() click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 36
def no_content?
  parsed_file_data.no_content?
end
parsed_file_data() click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 31
def parsed_file_data
  return false unless valid?
  @parsed_file_data ||= FileData.new file_data
end
topic_type() click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 27
def topic_type
  topic_matches.first
end
valid?() click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 40
def valid?
  !!file_data
end

Private Instance Methods

topic_matches() click to toggle source
# File lib/device_cloud/push_notification/message.rb, line 44
def topic_matches
  topic.split('/') & KNOWN_TOPICS
end