class Urbanairship::Devices::ChannelTags

Attributes

add_group[R]
audience[R]
client[W]
remove_group[R]
set_group[R]

Public Class Methods

new(client: required('client')) click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 12
def initialize(client: required('client'))
  @client = client
  @audience = {}
  @add_group = {}
  @remove_group = {}
  @set_group = {}
  @path = channel_path('tags/')
end

Public Instance Methods

add(group_name: required('group_name'), tags: required('tags')) click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 33
def add(group_name: required('group_name'), tags: required('tags'))
  @add_group[group_name] = tags
end
remove(group_name: required('group_name'), tags: required('tags')) click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 37
def remove(group_name: required('group_name'), tags: required('tags'))
  @remove_group[group_name] = tags
end
send_request() click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 45
def send_request
  payload = {}

  fail ArgumentError,
    'An audience is required for modifying tags' if @audience.empty?
  fail ArgumentError,
    'A tag request cannot both add and set tags' if !@add_group.empty? and !@set_group.empty?
  fail ArgumentError,
    'A tag request cannot both remove and set tags' if !@remove_group.empty? and !@set_group.empty?
  fail ArgumentError,
    'A tag request must add, remove, or set a tag' if @remove_group.empty? and @add_group.empty? and @set_group.empty?

  payload['audience'] = @audience
  payload['add'] = @add_group unless @add_group.empty?
  payload['remove'] = @remove_group unless @remove_group.empty?
  payload['set'] = @set_group unless @set_group.empty?

  response = @client.send_request(
    method: 'POST',
    body: JSON.dump(payload),
    path: @path,
    content_type: 'application/json'
  )
  logger.info("Set tags for audience: #{@audience}")
  response
end
set(group_name: required('group_name'), tags: required('tags')) click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 41
def set(group_name: required('group_name'), tags: required('tags'))
  @set_group[group_name] = tags
end
set_audience(ios: nil, android: nil, amazon: nil) click to toggle source
# File lib/urbanairship/devices/channel_tags.rb, line 21
def set_audience(ios: nil, android: nil, amazon: nil)
  if ios
    @audience['ios_channel'] = ios
  end
  if android
    @audience['android_channel'] = android
  end
  if amazon
    @audience['amazon_channel'] = amazon
  end
end