Class: Ably::Rest::Push::Admin

Inherits:
Object
  • Object
show all
Includes:
Modules::Conversions
Defined in:
lib/ably/rest/push/admin.rb

Overview

Class providing push notification administrative functionality for registering devices and attaching to channels etc.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(push) ⇒ Admin

Returns a new instance of Admin.



17
18
19
20
# File 'lib/ably/rest/push/admin.rb', line 17

def initialize(push)
  @push = push
  @client = push.client
end

Instance Attribute Details

#clientObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



12
13
14
# File 'lib/ably/rest/push/admin.rb', line 12

def client
  @client
end

#pushObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



15
16
17
# File 'lib/ably/rest/push/admin.rb', line 15

def push
  @push
end

Instance Method Details

#channel_subscriptionsAbly::Rest::Push::ChannelSubscriptions

Manage channel subscriptions for devices or clients



53
54
55
# File 'lib/ably/rest/push/admin.rb', line 53

def channel_subscriptions
  @channel_subscriptions ||= ChannelSubscriptions.new(self)
end

#device_registrationsAbly::Rest::Push::DeviceRegistrations

Manage device registrations



45
46
47
# File 'lib/ably/rest/push/admin.rb', line 45

def device_registrations
  @device_registrations ||= DeviceRegistrations.new(self)
end

#publish(recipient, data) ⇒ void

This method returns an undefined value.

Publish a push message directly to a single recipient

Parameters:

  • recipient (Hash)

    A recipient device, client_id or raw APNS/FCM/web target. Refer to push documentation

  • data (Hash)

    The notification payload data and fields. Refer to push documentation

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ably/rest/push/admin.rb', line 29

def publish(recipient, data)
  raise ArgumentError, "Expecting a Hash object for recipient, got #{recipient.class}" unless recipient.kind_of?(Hash)
  raise ArgumentError, "Recipient data is empty. You must provide recipient details" if recipient.empty?
  raise ArgumentError, "Expecting a Hash object for data, got #{data.class}" unless data.kind_of?(Hash)
  raise ArgumentError, "Push data field is empty. You must provide attributes for the push notification" if data.empty?

  publish_data = data.merge(recipient: IdiomaticRubyWrapper(recipient))
  # Co-erce to camelCase for notitication fields which are always camelCase
  publish_data[:notification] = IdiomaticRubyWrapper(data[:notification]) if publish_data[:notification].kind_of?(Hash)
  client.post('/push/publish', publish_data)
end