braze_ruby 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +15 -0
- data/braze_ruby.gemspec +1 -1
- data/lib/braze_ruby/api.rb +1 -0
- data/lib/braze_ruby/endpoints.rb +1 -0
- data/lib/braze_ruby/endpoints/identify_users.rb +19 -0
- data/lib/braze_ruby/rest.rb +1 -0
- data/lib/braze_ruby/rest/identify_users.rb +14 -0
- data/lib/braze_ruby/version.rb +1 -1
- data/spec/braze_ruby/rest/identify_users_spec.rb +23 -0
- data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +66 -0
- data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +69 -0
- data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +69 -0
- data/spec/integrations/identify_users_spec.rb +32 -0
- metadata +18 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69312ed5aded0835cc1a47be5d8192b0055edef0c64acf05aca8eef6333e8ba1
|
4
|
+
data.tar.gz: aa86ae45bb15cce4fd1c4ac56f36cc9fe5fcc935e4015c07cd9f611e76b22bf5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae746b58c45e1b24a8b5eae483cc9ec5d42a4669aa70803803a9fe49575ee1b17d58e644f3d95c37b7668e1fa967baa850d76423687689f68b7bf56b3c53ac2d
|
7
|
+
data.tar.gz: 57a527541dc22889bd4ffd015e52ca2d04c45c6e251539de5e6830a9a76ff4b9a01041b6dbbc3f836e98b23689565b652d263986e8200628a51d08c08de28b7e
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -187,6 +187,21 @@ api.subscription_status_set(
|
|
187
187
|
)
|
188
188
|
```
|
189
189
|
|
190
|
+
### User Identification
|
191
|
+
|
192
|
+
#### Identify an alias-only user
|
193
|
+
```ruby
|
194
|
+
api.identify_users(
|
195
|
+
aliases_to_identify: [{
|
196
|
+
external_id: 1234,
|
197
|
+
user_alias: {
|
198
|
+
alias_name: "device123",
|
199
|
+
alias_label: "my_device_identifier",
|
200
|
+
}
|
201
|
+
}]
|
202
|
+
)
|
203
|
+
```
|
204
|
+
|
190
205
|
## Debugging
|
191
206
|
|
192
207
|
The BRAZE_RUBY_DEBUG environment variable will trigger full printouts of the Faraday gem's HTTP requests and responses.
|
data/braze_ruby.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
spec.required_ruby_version = '>= 2.0'
|
27
27
|
|
28
|
-
spec.add_dependency 'faraday'
|
28
|
+
spec.add_dependency 'faraday'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '>= 1.3'
|
31
31
|
spec.add_development_dependency 'rake', '~> 12.3.3'
|
data/lib/braze_ruby/api.rb
CHANGED
@@ -24,6 +24,7 @@ module BrazeRuby
|
|
24
24
|
include BrazeRuby::Endpoints::Campaigns
|
25
25
|
include BrazeRuby::Endpoints::Canvas
|
26
26
|
include BrazeRuby::Endpoints::Subscription
|
27
|
+
include BrazeRuby::Endpoints::IdentifyUsers
|
27
28
|
|
28
29
|
def export_users(**payload)
|
29
30
|
BrazeRuby::REST::ExportUsers.new(braze_url).perform(api_key, payload)
|
data/lib/braze_ruby/endpoints.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BrazeRuby
|
4
|
+
module Endpoints
|
5
|
+
module IdentifyUsers
|
6
|
+
attr_writer :identify_users_service
|
7
|
+
|
8
|
+
def identify_users(**payload)
|
9
|
+
identify_users_service.perform(api_key, payload)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def identify_users_service
|
15
|
+
@identify_users_service ||= BrazeRuby::REST::IdentifyUsers.new(braze_url)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/braze_ruby/rest.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BrazeRuby
|
4
|
+
module REST
|
5
|
+
class IdentifyUsers < Base
|
6
|
+
def perform(api_key, aliases_to_identify: [])
|
7
|
+
http.post '/users/identify', {
|
8
|
+
'api_key': api_key,
|
9
|
+
'aliases_to_identify': aliases_to_identify,
|
10
|
+
}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/braze_ruby/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe BrazeRuby::REST::IdentifyUsers do
|
6
|
+
let(:http) { double(:http) }
|
7
|
+
|
8
|
+
let(:payload) { {aliases_to_identify: [user]} }
|
9
|
+
let(:user) { { external_id: 123, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
|
10
|
+
|
11
|
+
let(:api_key) { :api_key }
|
12
|
+
|
13
|
+
subject { described_class.new :rest_url}
|
14
|
+
|
15
|
+
before { subject.http = http }
|
16
|
+
|
17
|
+
it 'makes an http call to the identify users endpoint' do
|
18
|
+
expect(http).to receive(:post).with '/users/identify',
|
19
|
+
payload.merge({ api_key: :api_key })
|
20
|
+
|
21
|
+
subject.perform(api_key, payload)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: "<BRAZE_REST_URL>/users/identify"
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"api_key":"non-existent","aliases_to_identify":[{"external_id":400,"user_alias":{"alias_name":"abc","alias_label":"foo"}}]}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Braze Ruby gem v0.3.2
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 401
|
21
|
+
message: Unauthorized
|
22
|
+
headers:
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Content-Length:
|
26
|
+
- '69'
|
27
|
+
Cache-Control:
|
28
|
+
- no-cache
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Server:
|
32
|
+
- nginx
|
33
|
+
Strict-Transport-Security:
|
34
|
+
- max-age=0; includeSubDomains
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- ''
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- ''
|
39
|
+
X-Ratelimit-Reset:
|
40
|
+
- ''
|
41
|
+
X-Request-Id:
|
42
|
+
- 8bd7f08e-2a28-4cac-af20-26dbf479eeb2
|
43
|
+
X-Runtime:
|
44
|
+
- '0.006500'
|
45
|
+
Accept-Ranges:
|
46
|
+
- bytes
|
47
|
+
Date:
|
48
|
+
- Thu, 19 Dec 2019 20:55:45 GMT
|
49
|
+
Via:
|
50
|
+
- 1.1 varnish
|
51
|
+
X-Served-By:
|
52
|
+
- cache-msp20825-MSP
|
53
|
+
X-Cache:
|
54
|
+
- MISS
|
55
|
+
X-Cache-Hits:
|
56
|
+
- '0'
|
57
|
+
X-Timer:
|
58
|
+
- S1576788945.296140,VS0,VE43
|
59
|
+
Vary:
|
60
|
+
- Origin,Accept-Encoding
|
61
|
+
body:
|
62
|
+
encoding: ASCII-8BIT
|
63
|
+
string: '{"message":"Invalid API key: non-existent"}'
|
64
|
+
http_version:
|
65
|
+
recorded_at: Thu, 19 Dec 2019 20:55:45 GMT
|
66
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,69 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: "<BRAZE_REST_URL>/users/identify"
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","aliases_to_identify":[{"external_id":400,"user_alias":{"alias_name":"abc","alias_label":"foo"}}]}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Braze Ruby gem v0.3.2
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 201
|
21
|
+
message: Created
|
22
|
+
headers:
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Content-Length:
|
26
|
+
- '66'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=0, private, must-revalidate
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Etag:
|
32
|
+
- W/"da612bda0a786bcb949da037e296a092"
|
33
|
+
Server:
|
34
|
+
- nginx
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=0; includeSubDomains
|
37
|
+
- max-age=31536000; includeSubDomains
|
38
|
+
X-Ratelimit-Limit:
|
39
|
+
- '250000'
|
40
|
+
X-Ratelimit-Remaining:
|
41
|
+
- '249975'
|
42
|
+
X-Ratelimit-Reset:
|
43
|
+
- '1576789200'
|
44
|
+
X-Request-Id:
|
45
|
+
- 9348cf6f-365f-43fe-b460-f956c932097d
|
46
|
+
X-Runtime:
|
47
|
+
- '0.005338'
|
48
|
+
Accept-Ranges:
|
49
|
+
- bytes
|
50
|
+
Date:
|
51
|
+
- Thu, 19 Dec 2019 20:55:44 GMT
|
52
|
+
Via:
|
53
|
+
- 1.1 varnish
|
54
|
+
X-Served-By:
|
55
|
+
- cache-msp20820-MSP
|
56
|
+
X-Cache:
|
57
|
+
- MISS
|
58
|
+
X-Cache-Hits:
|
59
|
+
- '0'
|
60
|
+
X-Timer:
|
61
|
+
- S1576788945.699710,VS0,VE187
|
62
|
+
Vary:
|
63
|
+
- Origin,Accept-Encoding
|
64
|
+
body:
|
65
|
+
encoding: ASCII-8BIT
|
66
|
+
string: '{"aliases_processed":1,"message":"success"}'
|
67
|
+
http_version:
|
68
|
+
recorded_at: Thu, 19 Dec 2019 20:55:44 GMT
|
69
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,69 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: "<BRAZE_REST_URL>/users/identify"
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","aliases_to_identify":[{"external_id":400,"user_alias":{"alias_name":"abc","alias_label":"foo"}}]}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Braze Ruby gem v0.3.2
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 201
|
21
|
+
message: Created
|
22
|
+
headers:
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Content-Length:
|
26
|
+
- '66'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=0, private, must-revalidate
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Etag:
|
32
|
+
- W/"da612bda0a786bcb949da037e296a092"
|
33
|
+
Server:
|
34
|
+
- nginx
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=0; includeSubDomains
|
37
|
+
- max-age=31536000; includeSubDomains
|
38
|
+
X-Ratelimit-Limit:
|
39
|
+
- '250000'
|
40
|
+
X-Ratelimit-Remaining:
|
41
|
+
- '249974'
|
42
|
+
X-Ratelimit-Reset:
|
43
|
+
- '1576789200'
|
44
|
+
X-Request-Id:
|
45
|
+
- 6df46e00-4a8a-4b57-8acf-849cbc53c569
|
46
|
+
X-Runtime:
|
47
|
+
- '0.005888'
|
48
|
+
Accept-Ranges:
|
49
|
+
- bytes
|
50
|
+
Date:
|
51
|
+
- Thu, 19 Dec 2019 20:55:45 GMT
|
52
|
+
Via:
|
53
|
+
- 1.1 varnish
|
54
|
+
X-Served-By:
|
55
|
+
- cache-msp20823-MSP
|
56
|
+
X-Cache:
|
57
|
+
- MISS
|
58
|
+
X-Cache-Hits:
|
59
|
+
- '0'
|
60
|
+
X-Timer:
|
61
|
+
- S1576788945.958885,VS0,VE226
|
62
|
+
Vary:
|
63
|
+
- Origin,Accept-Encoding
|
64
|
+
body:
|
65
|
+
encoding: ASCII-8BIT
|
66
|
+
string: '{"aliases_processed":1,"message":"success"}'
|
67
|
+
http_version:
|
68
|
+
recorded_at: Thu, 19 Dec 2019 20:55:45 GMT
|
69
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'identify users' do
|
6
|
+
let(:user) { { external_id: 400, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
|
7
|
+
|
8
|
+
subject(:identify_users) do
|
9
|
+
api.identify_users(aliases_to_identify: [user])
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'with success', vcr: true do
|
13
|
+
it 'responds with created' do
|
14
|
+
expect(identify_users.status).to be 201
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'responds with success message' do
|
18
|
+
expect(JSON.parse(identify_users.body)).to eq(
|
19
|
+
'aliases_processed' => 1,
|
20
|
+
'message' => 'success'
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'unauthorized', vcr: true do
|
26
|
+
let(:api_key) { 'non-existent' }
|
27
|
+
|
28
|
+
it 'responds with unauthorized' do
|
29
|
+
expect(identify_users.status).to be 401
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braze_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Nussbaum
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-12-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0
|
21
|
+
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0
|
28
|
+
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: bundler
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- lib/braze_ruby/endpoints/delete_users.rb
|
166
166
|
- lib/braze_ruby/endpoints/email_status.rb
|
167
167
|
- lib/braze_ruby/endpoints/email_sync.rb
|
168
|
+
- lib/braze_ruby/endpoints/identify_users.rb
|
168
169
|
- lib/braze_ruby/endpoints/schedule_messages.rb
|
169
170
|
- lib/braze_ruby/endpoints/send_messages.rb
|
170
171
|
- lib/braze_ruby/endpoints/subscription.rb
|
@@ -178,6 +179,7 @@ files:
|
|
178
179
|
- lib/braze_ruby/rest/email_status.rb
|
179
180
|
- lib/braze_ruby/rest/email_unsubscribes.rb
|
180
181
|
- lib/braze_ruby/rest/export_users.rb
|
182
|
+
- lib/braze_ruby/rest/identify_users.rb
|
181
183
|
- lib/braze_ruby/rest/list_segments.rb
|
182
184
|
- lib/braze_ruby/rest/schedule_messages.rb
|
183
185
|
- lib/braze_ruby/rest/send_messages.rb
|
@@ -194,6 +196,7 @@ files:
|
|
194
196
|
- spec/braze_ruby/rest/delete_users_spec.rb
|
195
197
|
- spec/braze_ruby/rest/email_status_spec.rb
|
196
198
|
- spec/braze_ruby/rest/export_users_spec.rb
|
199
|
+
- spec/braze_ruby/rest/identify_users_spec.rb
|
197
200
|
- spec/braze_ruby/rest/schedule_messages_spec.rb
|
198
201
|
- spec/braze_ruby/rest/send_messages_spec.rb
|
199
202
|
- spec/braze_ruby/rest/track_users_spec.rb
|
@@ -213,6 +216,9 @@ files:
|
|
213
216
|
- spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml
|
214
217
|
- spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml
|
215
218
|
- spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml
|
219
|
+
- spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml
|
220
|
+
- spec/fixtures/responses/identify_users/with_success/responds_with_created.yml
|
221
|
+
- spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml
|
216
222
|
- spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml
|
217
223
|
- spec/fixtures/responses/list_segments/with_success/responds_with_success.yml
|
218
224
|
- spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml
|
@@ -236,6 +242,7 @@ files:
|
|
236
242
|
- spec/integrations/email_status_spec.rb
|
237
243
|
- spec/integrations/email_sync_spec.rb
|
238
244
|
- spec/integrations/export_users_spec.rb
|
245
|
+
- spec/integrations/identify_users_spec.rb
|
239
246
|
- spec/integrations/list_segments_spec.rb
|
240
247
|
- spec/integrations/schedule_messages_spec.rb
|
241
248
|
- spec/integrations/send_messages_spec.rb
|
@@ -278,6 +285,7 @@ test_files:
|
|
278
285
|
- spec/braze_ruby/rest/delete_users_spec.rb
|
279
286
|
- spec/braze_ruby/rest/email_status_spec.rb
|
280
287
|
- spec/braze_ruby/rest/export_users_spec.rb
|
288
|
+
- spec/braze_ruby/rest/identify_users_spec.rb
|
281
289
|
- spec/braze_ruby/rest/schedule_messages_spec.rb
|
282
290
|
- spec/braze_ruby/rest/send_messages_spec.rb
|
283
291
|
- spec/braze_ruby/rest/track_users_spec.rb
|
@@ -297,6 +305,9 @@ test_files:
|
|
297
305
|
- spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml
|
298
306
|
- spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml
|
299
307
|
- spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml
|
308
|
+
- spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml
|
309
|
+
- spec/fixtures/responses/identify_users/with_success/responds_with_created.yml
|
310
|
+
- spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml
|
300
311
|
- spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml
|
301
312
|
- spec/fixtures/responses/list_segments/with_success/responds_with_success.yml
|
302
313
|
- spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml
|
@@ -320,6 +331,7 @@ test_files:
|
|
320
331
|
- spec/integrations/email_status_spec.rb
|
321
332
|
- spec/integrations/email_sync_spec.rb
|
322
333
|
- spec/integrations/export_users_spec.rb
|
334
|
+
- spec/integrations/identify_users_spec.rb
|
323
335
|
- spec/integrations/list_segments_spec.rb
|
324
336
|
- spec/integrations/schedule_messages_spec.rb
|
325
337
|
- spec/integrations/send_messages_spec.rb
|