Class: Pushr::MessageApns

Inherits:
Message
  • Object
show all
Defined in:
lib/pushr/message_apns.rb

Constant Summary collapse

POSTFIX =
'apns'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#attributes_for_deviceObject

Returns the value of attribute attributes_for_device.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def attributes_for_device
  @attributes_for_device
end

#badgeObject

Returns the value of attribute badge.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def badge
  @badge
end

#categoryObject

Returns the value of attribute category.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def category
  @category
end

#content_availableObject

Returns the value of attribute content_available.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def content_available
  @content_available
end

#deviceObject

Returns the value of attribute device.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def device
  @device
end

#expiryObject

Returns the value of attribute expiry.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def expiry
  @expiry
end

#priorityObject

Returns the value of attribute priority.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def priority
  @priority
end

#soundObject

Returns the value of attribute sound.



5
6
7
# File 'lib/pushr/message_apns.rb', line 5

def sound
  @sound
end

Instance Method Details

#alertObject



22
23
24
25
26
27
# File 'lib/pushr/message_apns.rb', line 22

def alert
  string_or_json = @alert
  return MultiJson.load(string_or_json)
rescue
  return string_or_json
end

#alert=(alert) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/pushr/message_apns.rb', line 14

def alert=(alert)
  if alert.is_a?(Hash)
    @alert = MultiJson.dump(alert)
  else
    @alert = alert
  end
end

#idObject



29
30
31
# File 'lib/pushr/message_apns.rb', line 29

def id
  @id ||= OpenSSL::Random.random_bytes(4)
end

#payloadObject



43
44
45
# File 'lib/pushr/message_apns.rb', line 43

def payload
  MultiJson.dump(as_json)
end

#payload_sizeObject



47
48
49
# File 'lib/pushr/message_apns.rb', line 47

def payload_size
  payload.bytesize
end

#to_hashObject



51
52
53
54
55
56
57
# File 'lib/pushr/message_apns.rb', line 51

def to_hash
  hsh = { type: self.class.to_s, app: app, device: device, alert: alert, badge: badge, sound: sound, expiry: expiry,
          category: category, attributes_for_device: attributes_for_device, priority: priority,
          content_available: content_available }
  hsh[Pushr::Core.external_id_tag] = external_id if external_id
  hsh
end

#to_messageObject



33
34
35
36
37
38
39
40
41
# File 'lib/pushr/message_apns.rb', line 33

def to_message
  data = ''
  data << [1, [device].pack('H*').bytesize, [device].pack('H*')].pack('CnA*')
  data << [2, payload.bytesize, payload].pack('CnA*')
  data << [3, id.bytesize, id].pack('CnA*')
  data << [4, 4, expiry].pack('CnN')
  data << [5, 1, priority].pack('CnC')
  ([2, data.bytesize].pack('CN') + data)
end