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.



148
149
150
151
# File 'lib/outbound.rb', line 148

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

Instance Method Details

#disable(platform, user_id, token) ⇒ Object



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

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



222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/outbound.rb', line 222

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



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/outbound.rb', line 153

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



238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# File 'lib/outbound.rb', line 238

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



260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/outbound.rb', line 260

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



171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/outbound.rb', line 171

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