class Outbound::Client
Public Class Methods
new(api_key, logger)
click to toggle source
# File lib/outbound.rb, line 158 def initialize(api_key, logger) @api_key = api_key @logger = logger end
Public Instance Methods
alias(user_id, previous_id)
click to toggle source
# File lib/outbound.rb, line 163 def alias(user_id, previous_id) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end unless previous_id.is_a? String or previous_id.is_a? Numeric res = Result.new Outbound::ERROR_PREVIOUS_ID, false @logger.error res.error return res end user_data = {:user_id => user_id, :previous_id => previous_id} return post(@api_key, '/identify', user_data) end
disable(platform, user_id, token)
click to toggle source
# File lib/outbound.rb, line 227 def disable(platform, user_id, token) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end unless token.is_a? String res = Result.new Outbound::ERROR_TOKEN, false @logger.error res.error return res end unless [Outbound::APNS, Outbound::GCM].include? platform res = Result.new Outbound::ERROR_PLATFORM, false @logger.error res.error return res end return post(@api_key, "/#{platform}/disable", {:token => token, :user_id => user_id}) end
disable_all(platform, user_id)
click to toggle source
# File lib/outbound.rb, line 249 def disable_all(platform, user_id) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end unless [Outbound::APNS, Outbound::GCM].include? platform res = Result.new Outbound::ERROR_PLATFORM, false @logger.error res.error return res end return post(@api_key, "/#{platform}/disable", {:all => true, :user_id => user_id}) end
identify(user_id, info={})
click to toggle source
# File lib/outbound.rb, line 180 def identify(user_id, info={}) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end user_data = {:user_id => user_id} begin user = user(info) user_data = user_data.merge user rescue @logger.error "Could not use user info (#{info}) and/or user attributes #{attributes} given to identify call." end return post(@api_key, '/identify', user_data) end
register(platform, user_id, token)
click to toggle source
# File lib/outbound.rb, line 265 def register(platform, user_id, token) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end unless token.is_a? String res = Result.new Outbound::ERROR_TOKEN, false @logger.error res.error return res end unless [Outbound::APNS, Outbound::GCM].include? platform res = Result.new Outbound::ERROR_PLATFORM, false @logger.error res.error return res end return post(@api_key, "/#{platform}/register", {:token => token, :user_id => user_id}) end
subscription(user_id, unsubscribe=false, all=false, campaign_ids=nil)
click to toggle source
# File lib/outbound.rb, line 287 def subscription user_id, unsubscribe=false, all=false, campaign_ids=nil unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end if !all unless !campaign_ids.nil? && campaign_ids.is_a?(Array) && campaign_ids.length > 0 res = Result.new Outbound::ERROR_CAMPAIGN_IDS, false @logger.error res.error return res end end url = '/' + (unsubscribe ? 'unsubscribe' : 'subscribe') + '/' + (all ? 'all' : 'campaigns') data = {:user_id => user_id} if !all data[:campaign_ids] = campaign_ids end return post(@api_key, url, data) end
track(user_id, event, properties={}, user_info={}, timestamp=Time.now.to_i)
click to toggle source
# File lib/outbound.rb, line 198 def track(user_id, event, properties={}, user_info={}, timestamp=Time.now.to_i) unless user_id.is_a? String or user_id.is_a? Numeric res = Result.new Outbound::ERROR_USER_ID, false @logger.error res.error return res end unless event.is_a? String res = Result.new Outbound::ERROR_EVENT_NAME, false @logger.error res.error return res end data = {:user_id => user_id, :event => event} if properties.is_a? Hash if properties.length > 0 data[:properties] = properties end else @logger.error "Could not use event properties (#{properties}) given to track call." end data[:timestamp] = timestamp puts timestamp return post(@api_key, '/track', data) end
Private Instance Methods
post(api_key, path, data)
click to toggle source
# File lib/outbound.rb, line 312 def post(api_key, path, data) begin headers = HEADERS headers['X-Outbound-Key'] = api_key payload = JSON.generate data uri = URI("#{BASE_URL}#{path}") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' res = http.post(uri.path, payload, headers) status = res.code.to_i rescue Exception => e res = Result.new Outbound::ERROR_CONNECTION, false @logger.error res.error return res end err = nil if status < 200 or status >= 400 err = "#{status}" err << " - #{res.body}" unless res.body.empty? end return err, true end
user(info={})
click to toggle source
# File lib/outbound.rb, line 338 def user(info={}) unless info.is_a? Hash raise end user = { :first_name => info[:first_name], :last_name => info[:last_name], :email => info[:email], :phone_number => info[:phone_number], :apns => info[:apns_tokens], :gcm => info[:gcm_tokens], :group_id => info[:group_id], :group_attributes => info[:group_attributes], :previous_id => info[:previous_id], :attributes => info[:attributes], } return user.delete_if { |k, v| v.nil? || v.empty? } end