Class: Outbound::Client

Inherits:
Object
  • Object
show all
Includes:
Defaults
Defined in:
lib/outbound.rb

Constant Summary

Constants included from Defaults

Defaults::HEADERS

Instance Method Summary collapse

Constructor Details

#initialize(api_key, logger) ⇒ Client

Returns a new instance of Client.



158
159
160
161
# File 'lib/outbound.rb', line 158

def initialize(api_key, logger)
  @api_key = api_key
  @logger = logger
end

Instance Method Details

#alias(user_id, previous_id) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# 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) ⇒ Object



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# 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) ⇒ Object



249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# 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 = {}) ⇒ Object



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# 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) ⇒ Object



265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# 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) ⇒ Object



287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
# 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) ⇒ Object



198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/outbound.rb', line 198

def track(user_id, event, properties={}, ={}, 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