leanplum_api 3.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 981ece28774e6f0627530dc0410181d5eeb52522
4
- data.tar.gz: dcaf55c062c0a533973f1a3f8e0118542d8ed3ea
3
+ metadata.gz: 2908e4c232266ec051f099699765d0605a270e2b
4
+ data.tar.gz: 82b980405f5c55a3096e4101cb2c7b503796f18b
5
5
  SHA512:
6
- metadata.gz: aa4dbf8587246f8a4b6cd6f18e5c7ffd6f3737a72358386131572a1f59fe50997d07d881bfd077f4c274a23945c96f4f6a5c3403a1c475672f1f39b7eaafa057
7
- data.tar.gz: 5e6836dc8850193e3a1313de6bf1db2a2eeeca8fd49fdc6801482548d14ce2aac518b8efc1683d91f52e6149a14d0f380538be4f25b3923e37a53bec1558cfa5
6
+ metadata.gz: 21525c8ab65ad7b2226b06bb3717df28b131aba26e114625b20aa32c6f5b4e828655f3d485b3d85f5f80d7dda6165d9f8926f533109cdf03e065cd38a0b67ae2
7
+ data.tar.gz: 07f5ebb8514bedcd977f74d173127b074fb2dae7efd36bcc0fc91181e8d2865647ca96dbb8e61cf32b3836fd94b259da2b0ee7e4e2447d523c91b8d593d331ec
data/README.md CHANGED
@@ -10,7 +10,7 @@ Leanplum also likes to change and break stuff in their API without changing the
10
10
 
11
11
  The gem uses the ```multi``` method with a POST for all event tracking and user attribute updating requests. Check Leanplum's docs for more information on ```multi```.
12
12
 
13
- Tested with Leanplum API version 1.0.6.
13
+ Tested with Leanplum API version 1.0.6 - which is actually totally meaningless because the version is always 1.0.6, even when they make major revisions to how the API works.
14
14
 
15
15
  `required_ruby_version` is set to 1.9 but this code has only been tested with Ruby 2.1.5 and up!
16
16
 
@@ -66,6 +66,22 @@ attribute_hash = {
66
66
  }
67
67
  api.set_user_attributes(attribute_hash)
68
68
 
69
+ # In 2017, Leanplum implemented the ability to set various first and last timestamps for event occurrences, as well as
70
+ # counts for that event in their API at the same time as you set various attributes for that user.
71
+ # This is what it would look like to push data about an event that happened 5 times between 2015-02-01 and today.
72
+ attribute_hash = {
73
+ user_id: 12345,
74
+ events: {
75
+ my_event_name: {
76
+ count: 5,
77
+ value: 'woodgrain',
78
+ firstTime: '2015-02-01'.to_time,
79
+ lastTime: Time.now.utc
80
+ }
81
+ }
82
+ }
83
+ api.set_user_attributes(attribute_hash)
84
+
69
85
  # You must also provide the :event property for event tracking.
70
86
  ## :info is an optional property for an extra string.
71
87
  ## You can optionally provide a :time; if it is not set Leanplum will timestamp the event "now".
@@ -78,7 +94,8 @@ event = {
78
94
  some_event_property: 'boss_hog_on_candy'
79
95
  }
80
96
  api.track_events(event)
81
- # Events tracked like this will be made part of a session; for independent events use :allow_offline
97
+ # Events tracked like that will be made part of a session; for independent events use :allow_offline
98
+ # Ed. note 2017-09-12 - looks like Leanplum changed their API and everything is considered offline now
82
99
  api.track_events(event, allow_offline: true)
83
100
 
84
101
  # You can also track events and user attributes at the same time
@@ -101,6 +118,16 @@ response = wait_for_export_job(job_id)
101
118
 
102
119
  **Note well that Leanplum now officially recommends use of the automated S3 export instead of API based export.** According to a Leanplum engineer these two data export methodologies are completely independent data paths and in our experience we have found API based data export to be missing 10-15% of the data that is eventually returned by the automated export.
103
120
 
121
+ ### Other Available Methods
122
+ * `api.user_attributes(user_id)`
123
+ * `api.user_events(user_id)`
124
+ * `api.get_ab_tests(only_recent)`
125
+ * `api.get_ab_test(ab_test_id)`
126
+ * `api.get_messages(only_recent)`
127
+ * `api.get_message(message_id)`
128
+ * `api.get_variant(variant_id)`
129
+ * `api.get_vars(user_id)`
130
+
104
131
  ## Specs
105
132
 
106
133
  `bundle exec rspec` should work fine at running existing specs.
@@ -22,8 +22,8 @@ module LeanplumApi
22
22
 
23
23
  # This method is for tracking events and/or updating user attributes at the same time, batched together like
24
24
  # leanplum recommends.
25
- # Set the :force_anomalous_override option to catch warnings from leanplum about anomalous events and force them to
26
- # not be considered anomalous.
25
+ # Set force_anomalous_override: true to catch warnings from leanplum about anomalous events and force them to not
26
+ # be considered anomalous
27
27
  def track_multi(events = nil, user_attributes = nil, options = {})
28
28
  request_data = Array.wrap(user_attributes).map { |h| build_user_attributes_hash(h) } +
29
29
  Array.wrap(events).map { |h| build_event_attributes_hash(h, options) }
@@ -60,6 +60,7 @@ module LeanplumApi
60
60
  # leads to sort of unprocessed information that can be incomplete.
61
61
  # They recommend using the automatic export to S3 if possible.
62
62
  def export_data(start_time, end_time = nil)
63
+ LeanplumApi.configuration.logger.warn("You should probably use the direct S3 export instead of exportData")
63
64
  fail "Start time #{start_time} after end time #{end_time}" if end_time && start_time > end_time
64
65
  LeanplumApi.configuration.logger.info("Requesting data export from #{start_time} to #{end_time}...")
65
66
 
@@ -222,9 +223,17 @@ module LeanplumApi
222
223
  # As of 2015-10 Leanplum supports ISO8601 date & time strings as user attributes.
223
224
  def build_user_attributes_hash(user_hash, action = 'setUserAttributes')
224
225
  user_hash = HashWithIndifferentAccess.new(user_hash)
225
- user_hash.each { |k, v| user_hash[k] = v.iso8601 if v.is_a?(Date) || v.is_a?(Time) || v.is_a?(DateTime) }
226
+ user_hash.each { |k, v| user_hash[k] = v.iso8601 if is_date_or_time?(v) }
226
227
 
227
- extract_user_id_or_device_id_hash!(user_hash).merge(action: action, userAttributes: user_hash)
228
+ if (events = user_hash.delete(:events))
229
+ events.each do |event_name, event_props|
230
+ event_props.each { |k, v| event_props[k] = v.strftime('%s').to_i if is_date_or_time?(v) }
231
+ end
232
+ end
233
+
234
+ user_attributes = extract_user_id_or_device_id_hash!(user_hash).merge(action: action, userAttributes: user_hash)
235
+ user_attributes[:events] = events if events
236
+ user_attributes
228
237
  end
229
238
 
230
239
  # Events have a :user_id or :device id, a name (:event) and an optional time (:time)
@@ -235,11 +244,15 @@ module LeanplumApi
235
244
  fail ":event key not present in #{event_hash}" unless event_name
236
245
 
237
246
  event = { action: 'track', event: event_name }.merge(extract_user_id_or_device_id_hash!(event_hash))
238
- event.merge!(time: event_hash.delete(:time).strftime('%s')) if event_hash[:time]
247
+ event.merge!(time: event_hash.delete(:time).strftime('%s').to_i) if event_hash[:time]
239
248
  event.merge!(info: event_hash.delete(:info)) if event_hash[:info]
240
249
  event.merge!(allowOffline: true) if options[:allow_offline]
241
250
 
242
251
  event_hash.keys.size > 0 ? event.merge(params: event_hash.symbolize_keys ) : event
243
252
  end
253
+
254
+ def is_date_or_time?(obj)
255
+ obj.is_a?(Date) || obj.is_a?(Time) || obj.is_a?(DateTime)
256
+ end
244
257
  end
245
258
  end
@@ -28,13 +28,13 @@ module LeanplumApi
28
28
  def validate_operation_success(operations, response)
29
29
  success_indicators = response.body['response']
30
30
  if success_indicators.size != operations.size
31
- fail "Attempted to update #{operations.size} records but only received confirmation for #{success_indicators.size}!"
31
+ fail "Attempted to do #{operations.size} operations but only received confirmation for #{success_indicators.size}!"
32
32
  end
33
33
 
34
34
  failures = []
35
35
  success_indicators.each_with_index do |s, i|
36
36
  if s['success'].to_s != 'true'
37
- LeanplumApi.configuration.logger.error("Unsuccessful attempt to update at position #{i}: #{operations[i]}")
37
+ LeanplumApi.configuration.logger.error("Unsuccessful request at position #{i}: #{operations[i]}")
38
38
  failures << { operation: operations[i], error: s }
39
39
  end
40
40
  LeanplumApi.configuration.logger.warn("Warning for operation #{operations[i]}: #{s['warning']}") if s['warning']
@@ -1,3 +1,3 @@
1
1
  module LeanplumApi
2
- VERSION = '3.0.3'
2
+ VERSION = '3.1.0'
3
3
  end
data/spec/api_spec.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe LeanplumApi::API do
4
- let(:api) { LeanplumApi::API.new }
4
+ let(:api) { described_class.new }
5
5
  let(:first_user_id) { 123456 }
6
+ let(:first_event_time) { Time.now.utc - 1.day }
7
+ let(:last_event_time) { Time.now.utc }
6
8
  let(:users) do
7
9
  [{
8
10
  user_id: first_user_id,
@@ -11,7 +13,14 @@ describe LeanplumApi::API do
11
13
  gender: 'm',
12
14
  email: 'still_tippin@test.com',
13
15
  create_date: '2010-01-01'.to_date,
14
- is_tipping: true
16
+ is_tipping: true,
17
+ events: {
18
+ eventName1: {
19
+ count: 1,
20
+ firstTime: first_event_time,
21
+ lastTime: last_event_time
22
+ }
23
+ }
15
24
  }]
16
25
  end
17
26
 
@@ -20,6 +29,13 @@ describe LeanplumApi::API do
20
29
  expect(api.send(:build_user_attributes_hash, users.first)).to eq({
21
30
  userId: first_user_id,
22
31
  action: 'setUserAttributes',
32
+ events: {
33
+ 'eventName1' => {
34
+ 'count' => 1,
35
+ 'firstTime' => first_event_time.strftime('%s').to_i,
36
+ 'lastTime' => last_event_time.strftime('%s').to_i
37
+ }
38
+ },
23
39
  userAttributes: HashWithIndifferentAccess.new(
24
40
  first_name: 'Mike',
25
41
  last_name: 'Jones',
@@ -99,7 +115,7 @@ describe LeanplumApi::API do
99
115
  let(:event_hash) do
100
116
  {
101
117
  userId: first_user_id,
102
- time: Time.now.utc.strftime('%s'),
118
+ time: Time.now.utc.strftime('%s').to_i,
103
119
  action: 'track',
104
120
  event: purchase,
105
121
  params: { some_timestamp: timestamp }
@@ -137,9 +153,11 @@ describe LeanplumApi::API do
137
153
  end
138
154
 
139
155
  context 'anomalous data force_anomalous_override' do
156
+ let(:old_events) { events.map { |e| e[:time] -= 1.year; e } }
157
+
140
158
  it 'should successfully force the anomalous data override events' do
141
159
  VCR.use_cassette('track_events_anomaly_overrider') do
142
- expect { api.track_events(events, force_anomalous_override: true) }.to_not raise_error
160
+ expect { api.track_events(old_events, force_anomalous_override: true) }.to_not raise_error
143
161
  end
144
162
  end
145
163
  end
@@ -156,7 +174,7 @@ describe LeanplumApi::API do
156
174
  context 'user_events' do
157
175
  it 'should get user events for this user' do
158
176
  VCR.use_cassette('export_user') do
159
- expect(api.user_events(first_user_id)[purchase].keys).to eq(['firstTime', 'count', 'lastTime'])
177
+ expect(api.user_events(first_user_id)[purchase].keys).to eq(%w(firstTime lastTime count))
160
178
  end
161
179
  end
162
180
  end
@@ -198,8 +216,7 @@ describe LeanplumApi::API do
198
216
  context 'get_export_results' do
199
217
  it 'should get a status for a data export job' do
200
218
  VCR.use_cassette('get_export_results') do
201
- response = api.get_export_results('export_4727756026281984_2904941266315269120')
202
- expect(response).to eq({
219
+ expect(api.get_export_results('export_4727756026281984_2904941266315269120')).to eq({
203
220
  files: ['https://leanplum_export.storage.googleapis.com/export-4727756026281984-d5969d55-f242-48a6-85a3-165af08e2306-output-0'],
204
221
  number_of_bytes: 36590,
205
222
  number_of_sessions: 101,
@@ -230,11 +247,11 @@ describe LeanplumApi::API do
230
247
  it 'gets messages' do
231
248
  VCR.use_cassette('get_messages') do
232
249
  expect(api.get_messages).to eq([{
233
- "id" => 5670583287676928,
234
- "created" => 1440091595.799,
235
- "name" => "New Message",
236
- "active" => false,
237
- "messageType" => "Push Notification"
250
+ 'id' => 5670583287676928,
251
+ 'created' => 1440091595.799,
252
+ 'name' => 'New Message',
253
+ 'active' => false,
254
+ 'messageType' => 'Push Notification'
238
255
  }])
239
256
  end
240
257
  end
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,25 +21,25 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - e87e99bf7869f537a17983d4c3779707
26
+ - 482abfeaf55310728664574b5d8f8ffa
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxDoAyCtl9jMBQ; expires=Tue, 06-Oct-2020 17:33:33 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxDWBiDjl-HNBQ; expires=Sun, 01-Nov-2020 17:04:35 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:33 GMT
30
+ - Tue, 12 Sep 2017 21:04:35 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '96'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:33 GMT
36
+ - Tue, 12 Sep 2017 21:04:35 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"error":{"message":"You cannot export data older than
42
- 60 days"},"success":false}]}'
41
+ string: '{"response":[{"success":false,"error":{"message":"You cannot export
42
+ data older than 60 days"}}]}'
43
43
  http_version:
44
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
44
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
45
45
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 8184014402cee4aaa004b8db0c7fa518
26
+ - 5f52126aafee5383ee9c42dcbc363208
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxD-BCCul9jMBQ; expires=Tue, 06-Oct-2020 17:33:34 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxDFBSDkl-HNBQ; expires=Sun, 01-Nov-2020 17:04:36 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:34 GMT
30
+ - Tue, 12 Sep 2017 21:04:36 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '85'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:34 GMT
36
+ - Tue, 12 Sep 2017 21:04:36 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"jobId":"export_4727756026281984_1504277415450767360","success":true}]}'
41
+ string: '{"response":[{"jobId":"export_4727756026281984_6485639014313861120","success":true}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 821f167b9c66879b30679054f7b7b692
26
+ - 70e27b29a0e132e9b020b3c58861a123
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxCUBSCpl9jMBQ; expires=Tue, 06-Oct-2020 17:33:29 GMT; path=/
28
+ - GOOGAPPUID=xCgoIAxBmIN-X4c0F; expires=Sun, 01-Nov-2020 17:04:31 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:29 GMT
30
+ - Tue, 12 Sep 2017 21:04:31 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
- - '454'
34
+ - '526'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:29 GMT
36
+ - Tue, 12 Sep 2017 21:04:31 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"totalSessions":0,"created":1.43935302887E9,"events":{"purchase":{"firstTime":1.460514593026E9,"count":36,"lastTime":1.503005506018E9}},"unsubscribeChannels":[],"userId":"123456","lastActive":1.446709787966E9,"states":{},"userBucket":358,"devices":[],"success":true,"userAttributes":{"first_name":"Mike","create_date":"2010-01-01","email":"still_tippin@test.com","last_name":"Jones","gender":"m","is_tipping":"True"},"timeSpentInApp":0.0}]}'
41
+ string: '{"response":[{"totalSessions":0,"timeSpentInApp":0.0,"userAttributes":{"is_tipping":"True","gender":"m","last_name":"Jones","create_date":"2010-01-01","first_name":"Mike","email":"still_tippin@test.com"},"lastActive":1.446709787966E9,"devices":[],"success":true,"created":1.43935302887E9,"unsubscribeChannels":[],"userId":"123456","events":{"purchase":{"firstTime":1.460514593026E9,"lastTime":1.505189741992E9,"count":70},"eventName1":{"firstTime":1.4735664E9,"lastTime":1.5051888E9,"count":1}},"userBucket":358,"states":{}}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 255c8fa75fc030d09d96ef436bfecbb2
26
+ - 77c3cb5a37e7e738ab1e734b86c04d01
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxDkBCCwl9jMBQ; expires=Tue, 06-Oct-2020 17:33:36 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxCtAyDnl-HNBQ; expires=Sun, 01-Nov-2020 17:04:39 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:36 GMT
30
+ - Tue, 12 Sep 2017 21:04:39 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '44'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:36 GMT
36
+ - Tue, 12 Sep 2017 21:04:39 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"abTests":[],"success":true}]}'
41
+ string: '{"response":[{"success":true,"abTests":[]}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - e6ae12b1a7b12094b3d4ae7f38fc28bf
26
+ - 37ed4e82db5ccf5c93ec2c0cb02b88f8
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxCkAyCwl9jMBQ; expires=Tue, 06-Oct-2020 17:33:36 GMT; path=/
28
+ - GOOGAPPUID=xCgoIAxBnIOaX4c0F; expires=Sun, 01-Nov-2020 17:04:39 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:36 GMT
30
+ - Tue, 12 Sep 2017 21:04:39 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '44'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:36 GMT
36
+ - Tue, 12 Sep 2017 21:04:39 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"abTests":[],"success":true}]}'
41
+ string: '{"response":[{"success":true,"abTests":[]}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 99791af56ed96a2e814f36bba5e43e5c
26
+ - a0201485c5fa5fd2db265a7c401717de
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxC5ASCvl9jMBQ; expires=Tue, 06-Oct-2020 17:33:35 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxDZBiDll-HNBQ; expires=Sun, 01-Nov-2020 17:04:37 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:35 GMT
30
+ - Tue, 12 Sep 2017 21:04:37 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '268'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:35 GMT
36
+ - Tue, 12 Sep 2017 21:04:37 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"files":["https://leanplum_export.storage.googleapis.com/export-4727756026281984-d5969d55-f242-48a6-85a3-165af08e2306-output-0"],"jobId":"export_4727756026281984_2904941266315269120","numBytes":36590,"state":"FINISHED","success":true,"numSessions":101}]}'
41
+ string: '{"response":[{"numBytes":36590,"jobId":"export_4727756026281984_2904941266315269120","numSessions":101,"success":true,"files":["https://leanplum_export.storage.googleapis.com/export-4727756026281984-d5969d55-f242-48a6-85a3-165af08e2306-output-0"],"state":"FINISHED"}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,25 +21,25 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 2be9d7df703848967473640cd9e1ed4b
26
+ - e786087f6475468460337c3b45cb9805
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxDkAyCxl9jMBQ; expires=Tue, 06-Oct-2020 17:33:37 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxDdBCDol-HNBQ; expires=Sun, 01-Nov-2020 17:04:40 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:37 GMT
30
+ - Tue, 12 Sep 2017 21:04:40 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '165'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:37 GMT
36
+ - Tue, 12 Sep 2017 21:04:40 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"success":true,"messages":[{"id":5670583287676928,"created":1.440091595799E9,"name":"New
42
- Message","active":false,"messageType":"Push Notification"}]}]}'
41
+ string: '{"response":[{"success":true,"messages":[{"messageType":"Push Notification","created":1.440091595799E9,"name":"New
42
+ Message","active":false,"id":5670583287676928}]}]}'
43
43
  http_version:
44
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
44
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
45
45
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,24 +21,24 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - d92d025319adee1119428bcc10cfe581
26
+ - c8b9d8cd7e5d05d04d44d147f7c3dd46
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxD7ASCvl9jMBQ; expires=Tue, 06-Oct-2020 17:33:35 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxDzBSDml-HNBQ; expires=Sun, 01-Nov-2020 17:04:38 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:35 GMT
30
+ - Tue, 12 Sep 2017 21:04:38 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '123'
35
35
  Expires:
36
- - Thu, 17 Aug 2017 21:33:35 GMT
36
+ - Tue, 12 Sep 2017 21:04:38 GMT
37
37
  Cache-Control:
38
38
  - private
39
39
  body:
40
40
  encoding: UTF-8
41
- string: '{"response":[{"vars":{},"interfaceRules":[],"variants":[],"regions":{},"success":true,"messages":{},"interfaceEvents":[]}]}'
41
+ string: '{"response":[{"regions":{},"success":true,"messages":{},"vars":{},"interfaceRules":[],"variants":[],"interfaceEvents":[]}]}'
42
42
  http_version:
43
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
43
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
44
44
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Accept-Encoding:
13
13
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
14
  Accept:
@@ -21,20 +21,20 @@ http_interactions:
21
21
  Access-Control-Allow-Origin:
22
22
  - "*"
23
23
  Content-Type:
24
- - application/json; charset=UTF-8
24
+ - application/json;charset=utf-8
25
25
  X-Cloud-Trace-Context:
26
- - 7da0e833b34df34c9cd2b6e4a31eb65c
26
+ - 9dcf56897ff8e8ad7c535cbfd8b68a58
27
27
  Set-Cookie:
28
- - GOOGAPPUID=xCgsIAxDkBiCxl9jMBQ; expires=Tue, 06-Oct-2020 17:33:37 GMT; path=/
28
+ - GOOGAPPUID=xCgsIAxD7AyDol-HNBQ; expires=Sun, 01-Nov-2020 17:04:40 GMT; path=/
29
29
  Date:
30
- - Thu, 17 Aug 2017 21:33:37 GMT
30
+ - Tue, 12 Sep 2017 21:04:40 GMT
31
31
  Server:
32
32
  - Google Frontend
33
33
  Content-Length:
34
34
  - '73'
35
35
  body:
36
36
  encoding: UTF-8
37
- string: '{"response":[{"error":{"message":"Message not found."},"success":false}]}'
37
+ string: '{"response":[{"success":false,"error":{"message":"Message not found."}}]}'
38
38
  http_version:
39
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
39
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
40
40
  recorded_with: VCR 3.0.3
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_DEVELOPMENT_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_DEVELOPMENT_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: '{"data":[{"action":"setUserAttributes","resetAnomalies":true,"userId":123456}]}'
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Content-Type:
13
13
  - application/json
14
14
  Accept-Encoding:
@@ -23,24 +23,24 @@ http_interactions:
23
23
  Access-Control-Allow-Origin:
24
24
  - "*"
25
25
  Content-Type:
26
- - application/json; charset=UTF-8
26
+ - application/json;charset=utf-8
27
27
  X-Cloud-Trace-Context:
28
- - d7ebf4fc0c3a18f67ee55f88e5d57ebf
28
+ - 1c1ef65d9076a3950fa6158b5a22cdad
29
29
  Set-Cookie:
30
- - GOOGAPPUID=xCgsIAxDFASCql9jMBQ; expires=Tue, 06-Oct-2020 17:33:30 GMT; path=/
30
+ - GOOGAPPUID=xCgsIAxDIBiDfl-HNBQ; expires=Sun, 01-Nov-2020 17:04:31 GMT; path=/
31
31
  Date:
32
- - Thu, 17 Aug 2017 21:33:30 GMT
32
+ - Tue, 12 Sep 2017 21:04:31 GMT
33
33
  Server:
34
34
  - Google Frontend
35
35
  Content-Length:
36
36
  - '31'
37
37
  Expires:
38
- - Thu, 17 Aug 2017 21:33:30 GMT
38
+ - Tue, 12 Sep 2017 21:04:31 GMT
39
39
  Cache-Control:
40
40
  - private
41
41
  body:
42
42
  encoding: UTF-8
43
43
  string: '{"response":[{"success":true}]}'
44
44
  http_version:
45
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
45
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
46
46
  recorded_with: VCR 3.0.3
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"data":[{"userId":123456,"action":"setUserAttributes","userAttributes":{"first_name":"Mike","last_name":"Jones","gender":"m","email":"still_tippin@test.com","create_date":"2010-01-01","is_tipping":true}}]}'
8
+ string: '{"data":[{"userId":123456,"action":"setUserAttributes","userAttributes":{"first_name":"Mike","last_name":"Jones","gender":"m","email":"still_tippin@test.com","create_date":"2010-01-01","is_tipping":true},"events":{"eventName1":{"count":1,"firstTime":1505102400,"lastTime":1505188800}}}]}'
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.12.1
11
+ - Faraday v0.13.1
12
12
  Content-Type:
13
13
  - application/json
14
14
  Accept-Encoding:
@@ -23,25 +23,24 @@ http_interactions:
23
23
  Access-Control-Allow-Origin:
24
24
  - "*"
25
25
  Content-Type:
26
- - application/json; charset=UTF-8
26
+ - application/json;charset=utf-8
27
27
  X-Cloud-Trace-Context:
28
- - 40f001f15ccddf7fe56b8794e359ed7f
28
+ - 10338d882b43cc3fc371beeb52d6b40b
29
29
  Set-Cookie:
30
- - GOOGAPPUID=xCgoIAxA0IKiX2MwF; expires=Tue, 06-Oct-2020 17:33:29 GMT; path=/
30
+ - GOOGAPPUID=xCgoIAxBHIN6X4c0F; expires=Sun, 01-Nov-2020 17:04:30 GMT; path=/
31
31
  Date:
32
- - Thu, 17 Aug 2017 21:33:29 GMT
32
+ - Tue, 12 Sep 2017 21:04:30 GMT
33
33
  Server:
34
34
  - Google Frontend
35
35
  Content-Length:
36
- - '120'
36
+ - '31'
37
37
  Expires:
38
- - Thu, 17 Aug 2017 21:33:29 GMT
38
+ - Tue, 12 Sep 2017 21:04:30 GMT
39
39
  Cache-Control:
40
40
  - private
41
41
  body:
42
42
  encoding: UTF-8
43
- string: '{"response":[{"success":true,"warning":{"message":"Device clock skew
44
- detected (5 days behind). Rewriting timestamp."}}]}'
43
+ string: '{"response":[{"success":true}]}'
45
44
  http_version:
46
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
45
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
47
46
  recorded_with: VCR 3.0.3
@@ -2,14 +2,14 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":"1502510400","params":{"some_timestamp":"2015-05-01
9
- 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":"1502509800"}]}'
8
+ string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":1505188800,"params":{"some_timestamp":"2015-05-01
9
+ 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":1505188200}]}'
10
10
  headers:
11
11
  User-Agent:
12
- - Faraday v0.12.1
12
+ - Faraday v0.13.1
13
13
  Content-Type:
14
14
  - application/json
15
15
  Accept-Encoding:
@@ -24,26 +24,24 @@ http_interactions:
24
24
  Access-Control-Allow-Origin:
25
25
  - "*"
26
26
  Content-Type:
27
- - application/json; charset=UTF-8
27
+ - application/json;charset=utf-8
28
28
  X-Cloud-Trace-Context:
29
- - 666897794060191c1e9d5e8388b81353
29
+ - 8dc6623be625d67ff132d4c00264090a
30
30
  Set-Cookie:
31
- - GOOGAPPUID=xCgsIAxDcASCql9jMBQ; expires=Tue, 06-Oct-2020 17:33:30 GMT; path=/
31
+ - GOOGAPPUID=xCgsIAxCtByDgl-HNBQ; expires=Sun, 01-Nov-2020 17:04:32 GMT; path=/
32
32
  Date:
33
- - Thu, 17 Aug 2017 21:33:30 GMT
33
+ - Tue, 12 Sep 2017 21:04:32 GMT
34
34
  Server:
35
35
  - Google Frontend
36
36
  Content-Length:
37
- - '260'
37
+ - '82'
38
38
  Expires:
39
- - Thu, 17 Aug 2017 21:33:30 GMT
39
+ - Tue, 12 Sep 2017 21:04:32 GMT
40
40
  Cache-Control:
41
41
  - private
42
42
  body:
43
43
  encoding: UTF-8
44
- string: '{"response":[{"isOffline":true,"success":true,"warning":{"message":"Device
45
- clock skew detected (5 days behind). Rewriting timestamp."}},{"isOffline":true,"success":true,"warning":{"message":"Device
46
- clock skew detected (5 days behind). Rewriting timestamp."}}]}'
44
+ string: '{"response":[{"success":true,"isOffline":true},{"success":true,"isOffline":true}]}'
47
45
  http_version:
48
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
46
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
49
47
  recorded_with: VCR 3.0.3
@@ -2,14 +2,14 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"data":[{"userId":123456,"action":"setUserAttributes","userAttributes":{"first_name":"Mike","last_name":"Jones","gender":"m","email":"still_tippin@test.com","create_date":"2010-01-01","is_tipping":true}},{"action":"track","event":"purchase","userId":123456,"time":"1502510400","params":{"some_timestamp":"2015-05-01
9
- 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":"1502509800"}]}'
8
+ string: '{"data":[{"userId":123456,"action":"setUserAttributes","userAttributes":{"first_name":"Mike","last_name":"Jones","gender":"m","email":"still_tippin@test.com","create_date":"2010-01-01","is_tipping":true},"events":{"eventName1":{"count":1,"firstTime":1505102400,"lastTime":1505188800}}},{"action":"track","event":"purchase","userId":123456,"time":1505188800,"params":{"some_timestamp":"2015-05-01
9
+ 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":1505188200}]}'
10
10
  headers:
11
11
  User-Agent:
12
- - Faraday v0.12.1
12
+ - Faraday v0.13.1
13
13
  Content-Type:
14
14
  - application/json
15
15
  Accept-Encoding:
@@ -24,27 +24,24 @@ http_interactions:
24
24
  Access-Control-Allow-Origin:
25
25
  - "*"
26
26
  Content-Type:
27
- - application/json; charset=UTF-8
27
+ - application/json;charset=utf-8
28
28
  X-Cloud-Trace-Context:
29
- - c07da72319072cbedf834d35a3a8e5d9
29
+ - e30df8f39eca3f77705e8ae2c82d76d8
30
30
  Set-Cookie:
31
- - GOOGAPPUID=xCgsIAxDTAyCtl9jMBQ; expires=Tue, 06-Oct-2020 17:33:33 GMT; path=/
31
+ - GOOGAPPUID=xCgsIAxDCByDil-HNBQ; expires=Sun, 01-Nov-2020 17:04:35 GMT; path=/
32
32
  Date:
33
- - Thu, 17 Aug 2017 21:33:33 GMT
33
+ - Tue, 12 Sep 2017 21:04:35 GMT
34
34
  Server:
35
35
  - Google Frontend
36
36
  Content-Length:
37
- - '366'
37
+ - '99'
38
38
  Expires:
39
- - Thu, 17 Aug 2017 21:33:33 GMT
39
+ - Tue, 12 Sep 2017 21:04:35 GMT
40
40
  Cache-Control:
41
41
  - private
42
42
  body:
43
43
  encoding: UTF-8
44
- string: '{"response":[{"success":true,"warning":{"message":"Device clock skew
45
- detected (5 days behind). Rewriting timestamp."}},{"isOffline":true,"success":true,"warning":{"message":"Device
46
- clock skew detected (5 days behind). Rewriting timestamp."}},{"isOffline":true,"success":true,"warning":{"message":"Device
47
- clock skew detected (5 days behind). Rewriting timestamp."}}]}'
44
+ string: '{"response":[{"success":true},{"success":true,"isOffline":true},{"success":true,"isOffline":true}]}'
48
45
  http_version:
49
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
46
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
50
47
  recorded_with: VCR 3.0.3
@@ -2,14 +2,14 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":"1502510400","params":{"some_timestamp":"2015-05-01
9
- 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":"1502509800"}]}'
8
+ string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":1473652800,"params":{"some_timestamp":"2015-05-01
9
+ 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":1473652200}]}'
10
10
  headers:
11
11
  User-Agent:
12
- - Faraday v0.12.1
12
+ - Faraday v0.13.1
13
13
  Content-Type:
14
14
  - application/json
15
15
  Accept-Encoding:
@@ -24,37 +24,36 @@ http_interactions:
24
24
  Access-Control-Allow-Origin:
25
25
  - "*"
26
26
  Content-Type:
27
- - application/json; charset=UTF-8
27
+ - application/json;charset=utf-8
28
28
  X-Cloud-Trace-Context:
29
- - a90e4c3f6da128e404bdf0b1affc16e0
29
+ - 0b2d4c78bb712eb607f011ba61eb09cf
30
30
  Set-Cookie:
31
- - GOOGAPPUID=xCgsIAxDrBCCrl9jMBQ; expires=Tue, 06-Oct-2020 17:33:31 GMT; path=/
31
+ - GOOGAPPUID=xCgoIAxAAIKGb4c0F; expires=Sun, 01-Nov-2020 17:12:02 GMT; path=/
32
32
  Date:
33
- - Thu, 17 Aug 2017 21:33:31 GMT
33
+ - Tue, 12 Sep 2017 21:12:02 GMT
34
34
  Server:
35
35
  - Google Frontend
36
36
  Content-Length:
37
- - '260'
37
+ - '163'
38
38
  Expires:
39
- - Thu, 17 Aug 2017 21:33:31 GMT
39
+ - Tue, 12 Sep 2017 21:12:02 GMT
40
40
  Cache-Control:
41
41
  - private
42
42
  body:
43
43
  encoding: UTF-8
44
- string: '{"response":[{"isOffline":true,"success":true,"warning":{"message":"Device
45
- clock skew detected (5 days behind). Rewriting timestamp."}},{"isOffline":true,"success":true,"warning":{"message":"Device
46
- clock skew detected (5 days behind). Rewriting timestamp."}}]}'
44
+ string: '{"response":[{"success":true,"isOffline":true},{"success":true,"warning":{"message":"Past
45
+ event detected (365 days ago). Rewriting timestamp."},"isOffline":true}]}'
47
46
  http_version:
48
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
47
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
49
48
  - request:
50
49
  method: post
51
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_DEVELOPMENT_KEY>&devMode=false&time=1502510400
50
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_DEVELOPMENT_KEY>&devMode=false&time=1505188800
52
51
  body:
53
52
  encoding: UTF-8
54
53
  string: '{"data":[{"action":"setUserAttributes","resetAnomalies":true,"userId":123456},{"action":"setUserAttributes","resetAnomalies":true,"userId":54321}]}'
55
54
  headers:
56
55
  User-Agent:
57
- - Faraday v0.12.1
56
+ - Faraday v0.13.1
58
57
  Content-Type:
59
58
  - application/json
60
59
  Accept-Encoding:
@@ -69,24 +68,24 @@ http_interactions:
69
68
  Access-Control-Allow-Origin:
70
69
  - "*"
71
70
  Content-Type:
72
- - application/json; charset=UTF-8
71
+ - application/json;charset=utf-8
73
72
  X-Cloud-Trace-Context:
74
- - 8890d27564945450410dd64dd6ac16ce
73
+ - b565a9236508b41e2842074ccb6c4422
75
74
  Set-Cookie:
76
- - GOOGAPPUID=xCgsIAxDOByCsl9jMBQ; expires=Tue, 06-Oct-2020 17:33:32 GMT; path=/
75
+ - GOOGAPPUID=xCgsIAxDSAyCim-HNBQ; expires=Sun, 01-Nov-2020 17:12:02 GMT; path=/
77
76
  Date:
78
- - Thu, 17 Aug 2017 21:33:32 GMT
77
+ - Tue, 12 Sep 2017 21:12:02 GMT
79
78
  Server:
80
79
  - Google Frontend
81
80
  Content-Length:
82
81
  - '48'
83
82
  Expires:
84
- - Thu, 17 Aug 2017 21:33:32 GMT
83
+ - Tue, 12 Sep 2017 21:12:02 GMT
85
84
  Cache-Control:
86
85
  - private
87
86
  body:
88
87
  encoding: UTF-8
89
88
  string: '{"response":[{"success":true},{"success":true}]}'
90
89
  http_version:
91
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
90
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
92
91
  recorded_with: VCR 3.0.3
@@ -2,14 +2,14 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1502510400
5
+ uri: https://www.leanplum.com/api?action=multi&apiVersion=1.0.6&appId=<LEANPLUM_APP_ID>&clientKey=<LEANPLUM_PRODUCTION_KEY>&devMode=false&time=1505188800
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":"1502510400","allowOffline":true,"params":{"some_timestamp":"2015-05-01
9
- 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":"1502509800","allowOffline":true}]}'
8
+ string: '{"data":[{"action":"track","event":"purchase","userId":123456,"time":1505188800,"allowOffline":true,"params":{"some_timestamp":"2015-05-01
9
+ 01:02:03"}},{"action":"track","event":"purchase_page_view","userId":54321,"time":1505188200,"allowOffline":true}]}'
10
10
  headers:
11
11
  User-Agent:
12
- - Faraday v0.12.1
12
+ - Faraday v0.13.1
13
13
  Content-Type:
14
14
  - application/json
15
15
  Accept-Encoding:
@@ -24,26 +24,24 @@ http_interactions:
24
24
  Access-Control-Allow-Origin:
25
25
  - "*"
26
26
  Content-Type:
27
- - application/json; charset=UTF-8
27
+ - application/json;charset=utf-8
28
28
  X-Cloud-Trace-Context:
29
- - da0211f2f027a6d6521dbbc188cc4764
29
+ - 9de3f0a7f5bd26fcbf9edada00fd78d6
30
30
  Set-Cookie:
31
- - GOOGAPPUID=xCgoIAxAGIKuX2MwF; expires=Tue, 06-Oct-2020 17:33:31 GMT; path=/
31
+ - GOOGAPPUID=xCgoIAxB1IOCX4c0F; expires=Sun, 01-Nov-2020 17:04:32 GMT; path=/
32
32
  Date:
33
- - Thu, 17 Aug 2017 21:33:31 GMT
33
+ - Tue, 12 Sep 2017 21:04:32 GMT
34
34
  Server:
35
35
  - Google Frontend
36
36
  Content-Length:
37
- - '260'
37
+ - '82'
38
38
  Expires:
39
- - Thu, 17 Aug 2017 21:33:31 GMT
39
+ - Tue, 12 Sep 2017 21:04:32 GMT
40
40
  Cache-Control:
41
41
  - private
42
42
  body:
43
43
  encoding: UTF-8
44
- string: '{"response":[{"isOffline":true,"success":true,"warning":{"message":"Device
45
- clock skew detected (5 days behind). Rewriting timestamp."}},{"isOffline":true,"success":true,"warning":{"message":"Device
46
- clock skew detected (5 days behind). Rewriting timestamp."}}]}'
44
+ string: '{"response":[{"success":true,"isOffline":true},{"success":true,"isOffline":true}]}'
47
45
  http_version:
48
- recorded_at: Sat, 12 Aug 2017 04:00:00 GMT
46
+ recorded_at: Tue, 12 Sep 2017 04:00:00 GMT
49
47
  recorded_with: VCR 3.0.3
data/spec/spec_helper.rb CHANGED
@@ -18,7 +18,7 @@ RSpec.configure do |config|
18
18
  end
19
19
 
20
20
  # Leanplum requires passing the time in some requests so we freeze it.
21
- Timecop.freeze('2017-08-12'.to_time.utc)
21
+ Timecop.freeze('2017-09-12'.to_time.utc)
22
22
  end
23
23
  end
24
24
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leanplum_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lumos Labs, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5'
22
+ version: '6'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5'
32
+ version: '6'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: awesome_print
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
182
  requirements:
183
183
  - - ">="
184
184
  - !ruby/object:Gem::Version
185
- version: 1.9.3
185
+ version: 2.1.5
186
186
  required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  requirements:
188
188
  - - ">="