class Urbanairship::Push::ScheduledPush

Attributes

name[W]
push[RW]
schedule[W]
url[RW]

Public Class Methods

from_url(client: required('client'), url: required('url')) click to toggle source

Build a Scheduled Push Notification object from its existing Scheduled Push URL

@param [Object] client The Client @param [Object] url The existing Scheduled Push URL @return [Object] Scheduled Push Object

# File lib/urbanairship/push/push.rb, line 110
def self.from_url(client: required('client'), url: required('url'))
  scheduled_push = ScheduledPush.new(client)
  response_payload = client.send_request(
    method: 'GET',
    body: nil,
    url: url
  )
  payload = JSON.load(response_payload.to_json)

  p = Push.new(client)
  p.audience = payload['body']['push']['audience']
  p.notification = payload['body']['push']['notification']
  p.device_types = payload['body']['push']['device_types']
  p.message = payload['body']['push']['message']
  p.options = payload['body']['push']['options']

  scheduled_push.name = payload['body']['name']
  scheduled_push.schedule = payload['body']['schedule']
  scheduled_push.push = p
  scheduled_push.url = url
  scheduled_push
end
new(client) click to toggle source

Initialize a Scheduled Push Object

@param [Object] client

# File lib/urbanairship/push/push.rb, line 74
def initialize(client)
  @client = client
end

Public Instance Methods

cancel() click to toggle source

Cancel the Scheduled Push

@return [Object] Push Response

# File lib/urbanairship/push/push.rb, line 136
def cancel
  fail ArgumentError,
     'Cannot cancel ScheduledPush without a url.' if @url.nil?

  response = @client.send_request(
    method: 'DELETE',
    body: nil,
    url: @url,
    content_type: 'application/json'
  )
  pr = PushResponse.new(http_response_body: response['body'], http_response_code: response['code'].to_s)
  logger.info { "Result of canceling scheduled push: #{@url} was a: [#{pr.status_code}]" }
  pr
end
list(schedule_id: required('schedule_id')) click to toggle source
# File lib/urbanairship/push/push.rb, line 168
def list(schedule_id: required('schedule_id'))
  fail ArgumentError,
     'schedule_id must be a string' unless schedule_id.is_a? String
  resp = @client.send_request(
    method: 'GET',
    path: schedules_path(schedule_id)
  )
  logger.info("Retrieved info for schedule_id #{schedule_id}")
  resp
end
payload() click to toggle source
# File lib/urbanairship/push/push.rb, line 78
def payload
  compact_helper({
    name: @name,
    schedule: @schedule,
    push: @push.payload
  })
end
send_push() click to toggle source

Schedule the Push Notification

@raise [AirshipFailure] if the request failed @raise [Unauthorized] if authentication failed @raise [Forbidden] if app does not have entitlement @return [PushResponse] with `schedule_url` and other response data.

# File lib/urbanairship/push/push.rb, line 92
def send_push
  response = @client.send_request(
    method: 'POST',
    body: JSON.dump(payload),
    path: schedules_path,
    content_type: 'application/json'
  )
  pr = PushResponse.new(http_response_body: response['body'], http_response_code: response['code'].to_s)
  logger.info { pr.format }
  @url = pr.schedule_url
  pr
end
update() click to toggle source

Update the Scheduled Push

@return [Object]

# File lib/urbanairship/push/push.rb, line 154
def update
  fail ArgumentError,
     'Cannot update a ScheduledPush without a url.' if @url.nil?
  response = @client.send_request(
    method: 'PUT',
    body: JSON.dump(self.payload),
    url: @url,
    content_type: 'application/json'
  )
  pr = PushResponse.new(http_response_body: response['body'], http_response_code: response['code'].to_s)
  logger.info { pr.format }
  pr
end