class App42::Push::PushNotificationService

The service is for pushing the notifications to any device using GCM(Google Cloud Messaging). You have to upload your apikey that you received while registering for GCM and you have to store your device token with particular username. This service allows you the feature of sending message to particular channel, particular user or to all your users.For sending message to any channel, you have to create the channel and send the message to channel. The users which have subscribed to that channel will receive all the notification for that channel. For sending message to particular user, you have to pass username and message. Notification will sent to the device of registered user. The most important feature you can send your message to all your device whether it is iphone, android or blackberry.

Public Class Methods

new(api_key, secret_key, base_url) click to toggle source

this is a constructor that takes

@param apiKey @param secretKey @param baseURL

# File lib/push/PushNotificationService.rb, line 36
def initialize(api_key, secret_key, base_url)
  puts "PushNotificationService->initialize"
  @api_key = api_key
  @secret_key = secret_key
  @base_url = base_url
  @resource = "push"
  @version = "1.0"
end

Public Instance Methods

create_channel_for_app(channel, description) click to toggle source

Create Channel for app on which user can subscribe and get the notification for that channel

@param channel

- channel name which you want to create

@param description

- description for that channel

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 115
def create_channel_for_app(channel, description)
  puts "createChannelForApp Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(channel, "Channel Name");
  util.throwExceptionIfNullOrBlank(description, "Description");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {"channel" => {
      "name" => channel,
      "description" => description
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/createAppChannel"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
send_push_message_to_all(message) click to toggle source

Send push message to all your users

@param message

- push message

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 317
def send_push_message_to_all(message)
  puts "sendPushMessageToAll Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(message, "message");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {"message" => {
      "expiry" => util.get_timestamp_utc,
      "payload" => message
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/sendPushMessageToAll"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
send_push_message_to_all_by_type(message, type) click to toggle source

Send push message to all by type

@param message

- push message

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 417
def send_push_message_to_all_by_type(message, type)
  puts "sendPushMessageToAll Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(message, "message");
  util.throwExceptionIfNullOrBlank(type, "type");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {"message" => {
      "payload" => message,
      "expiry" => util.get_timestamp_utc,
      "type" => type
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/sendMessageToAllByType"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
send_push_message_to_channel(channel, message) click to toggle source

send push message to channel containing string

@param channel

- channel name which you want to send the message

@param message

- push message in string format

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 267
def send_push_message_to_channel(channel, message)
  puts "sendPushMessageToChannel Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(channel, "channel");
  util.throwExceptionIfNullOrBlank(message, "message");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {"message" => {
      "channel" => channel,
      "expiry" => util.get_timestamp_utc,
      "payload" => message
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/sendPushMessageToChannel/#{channel}"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
send_push_message_to_user(userName, message) click to toggle source

Send Push Message To paticular user in string format

@param username

- username which you want to send the message

@param message

- push message

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 367
def send_push_message_to_user(userName, message)
  puts "sendPushMessageToUser Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(userName, "userName");
  util.throwExceptionIfNullOrBlank(message, "message");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {"message" => {
      "userName" => userName,
      "expiry" => util.get_timestamp_utc,
      "payload" => message
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/sendMessage/#{userName}"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
store_device_token(userName, deviceToken, type) click to toggle source

Stores your device token on server with particular username

@param Username

- username with which you want your device to be registered

@param deviceToken

- device id for android phones

@param type

-

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 59
def store_device_token(userName, deviceToken, type)
  puts "storeDeviceToken Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(userName, "Username");
  util.throwExceptionIfNullOrBlank(deviceToken, "deviceToken");
  util.throwExceptionIfNullOrBlank(type, "Device Type");
  begin
    if (DeviceType.new.isAvailable(type) == nil)
      raise App42NotFoundException.new("Device Type #{type} does not Exist ");
    end
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"push" => {
      "userName" => userName,
      "deviceToken" => deviceToken,
      "type" => type
      }}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/storeDeviceToken/#{userName}"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
subscribe_to_channel(channel, userName) click to toggle source

Subscribe to the channel

@param channel

- the channel name which you want to subscribe

@param userName

- username which want to subscribe

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 166
def subscribe_to_channel(channel, userName)
  puts "subscribeToChannel Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(channel, "Channel Name");
  util.throwExceptionIfNullOrBlank(userName, "userName");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'push' => {"channel" => {
      "name" => channel,
      "userName" => userName
      }}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/subscribeToChannel/#{userName}"
    response = connection.post(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end
unsubscribe_from_channel(channel, userName) click to toggle source

Unsubscribe from particular channel

@param channel

- channel name which you want to unsubscribe

@param userName

- username which want to unsubscribe

@return PushNotification Object

@raise App42Exception

# File lib/push/PushNotificationService.rb, line 216
def unsubscribe_from_channel(channel, userName)
  puts "unsubscribeFromChannel Called "
  puts "Base url #{@base_url}"
  response = nil;
  pushObj = nil;
  pushObj = PushNotification.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(channel, "Channel Name");
  util.throwExceptionIfNullOrBlank(userName, "userName");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'push' => {"channel" => {
      "userName" => userName,
      "name" => channel
      }}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/unsubscribeToChannel/#{userName}"
    response = connection.put(signature, resource_url, query_params, body)
    push = PushNotificationResponseBuilder.new()
    pushObj = push.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return pushObj
end