braze_ruby 0.2.2 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +10 -10
- data/README.md +24 -0
- data/Rakefile +2 -0
- data/braze_ruby.gemspec +8 -8
- data/lib/braze_ruby.rb +2 -0
- data/lib/braze_ruby/api.rb +4 -0
- data/lib/braze_ruby/deprecated.rb +2 -0
- data/lib/braze_ruby/endpoints.rb +2 -0
- data/lib/braze_ruby/endpoints/campaigns.rb +2 -0
- data/lib/braze_ruby/endpoints/canvas.rb +6 -0
- data/lib/braze_ruby/endpoints/delete_users.rb +2 -0
- data/lib/braze_ruby/endpoints/email_status.rb +2 -0
- data/lib/braze_ruby/endpoints/email_sync.rb +2 -0
- data/lib/braze_ruby/endpoints/schedule_messages.rb +2 -0
- data/lib/braze_ruby/endpoints/send_messages.rb +2 -0
- data/lib/braze_ruby/endpoints/subscription.rb +20 -0
- data/lib/braze_ruby/endpoints/track_users.rb +2 -0
- data/lib/braze_ruby/http.rb +2 -0
- data/lib/braze_ruby/rest.rb +6 -0
- data/lib/braze_ruby/rest/base.rb +2 -0
- data/lib/braze_ruby/rest/canvas_details.rb +22 -0
- data/lib/braze_ruby/rest/delete_users.rb +2 -0
- data/lib/braze_ruby/rest/email_hard_bounces.rb +2 -0
- data/lib/braze_ruby/rest/email_status.rb +2 -0
- data/lib/braze_ruby/rest/email_unsubscribes.rb +2 -0
- data/lib/braze_ruby/rest/export_users.rb +2 -0
- data/lib/braze_ruby/rest/list_segments.rb +2 -0
- data/lib/braze_ruby/rest/schedule_messages.rb +2 -0
- data/lib/braze_ruby/rest/send_messages.rb +2 -0
- data/lib/braze_ruby/rest/subscription_status_get.rb +22 -0
- data/lib/braze_ruby/rest/subscription_status_set.rb +22 -0
- data/lib/braze_ruby/rest/subscription_user_status.rb +22 -0
- data/lib/braze_ruby/rest/track_users.rb +2 -0
- data/lib/braze_ruby/rest/trigger_campaign_send.rb +2 -0
- data/lib/braze_ruby/rest/trigger_canvas_send.rb +2 -0
- data/lib/braze_ruby/version.rb +3 -1
- data/spec/braze_ruby/api_spec.rb +2 -0
- data/spec/braze_ruby/endpoints/delete_users_spec.rb +2 -0
- data/spec/braze_ruby/endpoints/track_users_spec.rb +2 -0
- data/spec/braze_ruby/rest/delete_users_spec.rb +2 -0
- data/spec/braze_ruby/rest/email_status_spec.rb +2 -0
- data/spec/braze_ruby/rest/export_users_spec.rb +2 -0
- data/spec/braze_ruby/rest/schedule_messages_spec.rb +2 -0
- data/spec/braze_ruby/rest/send_messages_spec.rb +2 -0
- data/spec/braze_ruby/rest/track_users_spec.rb +2 -0
- data/spec/factories.rb +2 -0
- data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +67 -0
- data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +69 -0
- data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +66 -0
- data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +135 -0
- data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_checking_subscribed_and_unsubscribed_user_status/returns_only_users_that_were_once_subscribed.yml +205 -0
- data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +193 -0
- data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +207 -0
- data/spec/integrations/campaigns_spec.rb +2 -0
- data/spec/integrations/canvas_spec.rb +11 -0
- data/spec/integrations/delete_users_spec.rb +2 -0
- data/spec/integrations/email_status_spec.rb +2 -0
- data/spec/integrations/email_sync_spec.rb +2 -0
- data/spec/integrations/export_users_spec.rb +2 -0
- data/spec/integrations/list_segments_spec.rb +2 -0
- data/spec/integrations/schedule_messages_spec.rb +2 -0
- data/spec/integrations/send_messages_spec.rb +2 -0
- data/spec/integrations/subscription_spec.rb +149 -0
- data/spec/integrations/track_users_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/factory_bot.rb +2 -0
- data/spec/support/integrations.rb +2 -0
- data/spec/support/vcr.rb +2 -0
- metadata +56 -35
@@ -0,0 +1,193 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: "<BRAZE_REST_URL>/subscription/status/set"
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","external_id":"test-gem-001","subscription_group_id":"non-existing-subscription-group","subscription_state":"subscribed"}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Braze Ruby gem v0.2.2
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 400
|
21
|
+
message: Bad Request
|
22
|
+
headers:
|
23
|
+
Cache-Control:
|
24
|
+
- no-cache
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Server:
|
28
|
+
- nginx
|
29
|
+
Strict-Transport-Security:
|
30
|
+
- max-age=0; includeSubDomains
|
31
|
+
X-Ratelimit-Limit:
|
32
|
+
- '250000'
|
33
|
+
X-Ratelimit-Remaining:
|
34
|
+
- '249980'
|
35
|
+
X-Ratelimit-Reset:
|
36
|
+
- '1574409600'
|
37
|
+
X-Request-Id:
|
38
|
+
- 620af52d-d528-46bd-bc42-8e658850ff56
|
39
|
+
X-Runtime:
|
40
|
+
- '0.011493'
|
41
|
+
Content-Length:
|
42
|
+
- '69'
|
43
|
+
Accept-Ranges:
|
44
|
+
- bytes
|
45
|
+
Date:
|
46
|
+
- Fri, 22 Nov 2019 07:59:45 GMT
|
47
|
+
Via:
|
48
|
+
- 1.1 varnish
|
49
|
+
Connection:
|
50
|
+
- keep-alive
|
51
|
+
X-Served-By:
|
52
|
+
- cache-hhn4035-HHN
|
53
|
+
X-Cache:
|
54
|
+
- MISS
|
55
|
+
X-Cache-Hits:
|
56
|
+
- '0'
|
57
|
+
X-Timer:
|
58
|
+
- S1574409586.594248,VS0,VE57
|
59
|
+
Vary:
|
60
|
+
- Origin,Accept-Encoding
|
61
|
+
body:
|
62
|
+
encoding: ASCII-8BIT
|
63
|
+
string: '{"message":"Invalid subscription group ID"}'
|
64
|
+
http_version:
|
65
|
+
recorded_at: Fri, 22 Nov 2019 07:59:45 GMT
|
66
|
+
- request:
|
67
|
+
method: post
|
68
|
+
uri: "<BRAZE_REST_URL>/subscription/status/set"
|
69
|
+
body:
|
70
|
+
encoding: UTF-8
|
71
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","external_id":"test-gem-002","subscription_group_id":"non-existing-subscription-group","subscription_state":"unsubscribed"}'
|
72
|
+
headers:
|
73
|
+
Content-Type:
|
74
|
+
- application/json
|
75
|
+
Accept:
|
76
|
+
- application/json
|
77
|
+
User-Agent:
|
78
|
+
- Braze Ruby gem v0.2.2
|
79
|
+
Accept-Encoding:
|
80
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
81
|
+
response:
|
82
|
+
status:
|
83
|
+
code: 400
|
84
|
+
message: Bad Request
|
85
|
+
headers:
|
86
|
+
Cache-Control:
|
87
|
+
- no-cache
|
88
|
+
Content-Type:
|
89
|
+
- application/json
|
90
|
+
Server:
|
91
|
+
- nginx
|
92
|
+
Strict-Transport-Security:
|
93
|
+
- max-age=0; includeSubDomains
|
94
|
+
X-Ratelimit-Limit:
|
95
|
+
- '250000'
|
96
|
+
X-Ratelimit-Remaining:
|
97
|
+
- '249979'
|
98
|
+
X-Ratelimit-Reset:
|
99
|
+
- '1574409600'
|
100
|
+
X-Request-Id:
|
101
|
+
- 1dbbe62d-e251-46ac-b511-9e435f790a96
|
102
|
+
X-Runtime:
|
103
|
+
- '0.009396'
|
104
|
+
Content-Length:
|
105
|
+
- '69'
|
106
|
+
Accept-Ranges:
|
107
|
+
- bytes
|
108
|
+
Date:
|
109
|
+
- Fri, 22 Nov 2019 07:59:45 GMT
|
110
|
+
Via:
|
111
|
+
- 1.1 varnish
|
112
|
+
Connection:
|
113
|
+
- keep-alive
|
114
|
+
X-Served-By:
|
115
|
+
- cache-hhn4061-HHN
|
116
|
+
X-Cache:
|
117
|
+
- MISS
|
118
|
+
X-Cache-Hits:
|
119
|
+
- '0'
|
120
|
+
X-Timer:
|
121
|
+
- S1574409586.826897,VS0,VE15
|
122
|
+
Vary:
|
123
|
+
- Origin,Accept-Encoding
|
124
|
+
body:
|
125
|
+
encoding: ASCII-8BIT
|
126
|
+
string: '{"message":"Invalid subscription group ID"}'
|
127
|
+
http_version:
|
128
|
+
recorded_at: Fri, 22 Nov 2019 07:59:45 GMT
|
129
|
+
- request:
|
130
|
+
method: get
|
131
|
+
uri: "<BRAZE_REST_URL>/subscription/status/get?api_key=<BRAZE_REST_API_KEY>&external_id=test-gem-001&subscription_group_id=non-existing-subscription-group"
|
132
|
+
body:
|
133
|
+
encoding: US-ASCII
|
134
|
+
string: ''
|
135
|
+
headers:
|
136
|
+
Content-Type:
|
137
|
+
- application/json
|
138
|
+
Accept:
|
139
|
+
- application/json
|
140
|
+
User-Agent:
|
141
|
+
- Braze Ruby gem v0.2.2
|
142
|
+
Accept-Encoding:
|
143
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
144
|
+
response:
|
145
|
+
status:
|
146
|
+
code: 400
|
147
|
+
message: Bad Request
|
148
|
+
headers:
|
149
|
+
Cache-Control:
|
150
|
+
- no-cache
|
151
|
+
Content-Type:
|
152
|
+
- application/json
|
153
|
+
Server:
|
154
|
+
- nginx
|
155
|
+
Strict-Transport-Security:
|
156
|
+
- max-age=0; includeSubDomains
|
157
|
+
X-Ratelimit-Limit:
|
158
|
+
- '250000'
|
159
|
+
X-Ratelimit-Remaining:
|
160
|
+
- '249978'
|
161
|
+
X-Ratelimit-Reset:
|
162
|
+
- '1574409600'
|
163
|
+
X-Request-Id:
|
164
|
+
- f79731f9-3440-47dc-871c-6349fbaf28ea
|
165
|
+
X-Runtime:
|
166
|
+
- '0.009930'
|
167
|
+
Accept-Ranges:
|
168
|
+
- bytes
|
169
|
+
- bytes
|
170
|
+
Content-Length:
|
171
|
+
- '69'
|
172
|
+
Date:
|
173
|
+
- Fri, 22 Nov 2019 07:59:46 GMT
|
174
|
+
Via:
|
175
|
+
- 1.1 varnish
|
176
|
+
Connection:
|
177
|
+
- keep-alive
|
178
|
+
X-Served-By:
|
179
|
+
- cache-hhn4051-HHN
|
180
|
+
X-Cache:
|
181
|
+
- MISS
|
182
|
+
X-Cache-Hits:
|
183
|
+
- '0'
|
184
|
+
X-Timer:
|
185
|
+
- S1574409586.039550,VS0,VE13
|
186
|
+
Vary:
|
187
|
+
- Origin,Accept-Encoding
|
188
|
+
body:
|
189
|
+
encoding: ASCII-8BIT
|
190
|
+
string: '{"message":"Invalid subscription group ID"}'
|
191
|
+
http_version:
|
192
|
+
recorded_at: Fri, 22 Nov 2019 07:59:46 GMT
|
193
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,207 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: "<BRAZE_REST_URL>/subscription/status/set"
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","external_id":"test-gem-001","subscription_group_id":"0201b87a-ef6e-4410-9412-a298c4c1206d","subscription_state":"subscribed"}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
User-Agent:
|
15
|
+
- Braze Ruby gem v0.2.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
|
+
Cache-Control:
|
24
|
+
- max-age=0, private, must-revalidate
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Etag:
|
28
|
+
- W/"838a7c62adda8d131d694ae13ba2c5b7"
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Strict-Transport-Security:
|
32
|
+
- max-age=0; includeSubDomains
|
33
|
+
- max-age=31536000; includeSubDomains
|
34
|
+
X-Ratelimit-Limit:
|
35
|
+
- '250000'
|
36
|
+
X-Ratelimit-Remaining:
|
37
|
+
- '249986'
|
38
|
+
X-Ratelimit-Reset:
|
39
|
+
- '1574409600'
|
40
|
+
X-Request-Id:
|
41
|
+
- a5ba5ff1-a40c-471d-af9f-05cbf4b35e9c
|
42
|
+
X-Runtime:
|
43
|
+
- '0.010196'
|
44
|
+
Content-Length:
|
45
|
+
- '46'
|
46
|
+
Accept-Ranges:
|
47
|
+
- bytes
|
48
|
+
Date:
|
49
|
+
- Fri, 22 Nov 2019 07:59:44 GMT
|
50
|
+
Via:
|
51
|
+
- 1.1 varnish
|
52
|
+
Connection:
|
53
|
+
- keep-alive
|
54
|
+
X-Served-By:
|
55
|
+
- cache-hhn4074-HHN
|
56
|
+
X-Cache:
|
57
|
+
- MISS
|
58
|
+
X-Cache-Hits:
|
59
|
+
- '0'
|
60
|
+
X-Timer:
|
61
|
+
- S1574409584.278113,VS0,VE18
|
62
|
+
Vary:
|
63
|
+
- Origin,Accept-Encoding
|
64
|
+
body:
|
65
|
+
encoding: ASCII-8BIT
|
66
|
+
string: '{"message":"success"}'
|
67
|
+
http_version:
|
68
|
+
recorded_at: Fri, 22 Nov 2019 07:59:44 GMT
|
69
|
+
- request:
|
70
|
+
method: post
|
71
|
+
uri: "<BRAZE_REST_URL>/subscription/status/set"
|
72
|
+
body:
|
73
|
+
encoding: UTF-8
|
74
|
+
string: '{"api_key":"<BRAZE_REST_API_KEY>","external_id":"test-gem-002","subscription_group_id":"0201b87a-ef6e-4410-9412-a298c4c1206d","subscription_state":"unsubscribed"}'
|
75
|
+
headers:
|
76
|
+
Content-Type:
|
77
|
+
- application/json
|
78
|
+
Accept:
|
79
|
+
- application/json
|
80
|
+
User-Agent:
|
81
|
+
- Braze Ruby gem v0.2.2
|
82
|
+
Accept-Encoding:
|
83
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
84
|
+
response:
|
85
|
+
status:
|
86
|
+
code: 201
|
87
|
+
message: Created
|
88
|
+
headers:
|
89
|
+
Cache-Control:
|
90
|
+
- max-age=0, private, must-revalidate
|
91
|
+
Content-Type:
|
92
|
+
- application/json
|
93
|
+
Etag:
|
94
|
+
- W/"838a7c62adda8d131d694ae13ba2c5b7"
|
95
|
+
Server:
|
96
|
+
- nginx
|
97
|
+
Strict-Transport-Security:
|
98
|
+
- max-age=0; includeSubDomains
|
99
|
+
- max-age=31536000; includeSubDomains
|
100
|
+
X-Ratelimit-Limit:
|
101
|
+
- '250000'
|
102
|
+
X-Ratelimit-Remaining:
|
103
|
+
- '249985'
|
104
|
+
X-Ratelimit-Reset:
|
105
|
+
- '1574409600'
|
106
|
+
X-Request-Id:
|
107
|
+
- 7721b688-c1f0-423c-bb35-b967dd92bd21
|
108
|
+
X-Runtime:
|
109
|
+
- '0.007053'
|
110
|
+
Content-Length:
|
111
|
+
- '46'
|
112
|
+
Accept-Ranges:
|
113
|
+
- bytes
|
114
|
+
Date:
|
115
|
+
- Fri, 22 Nov 2019 07:59:44 GMT
|
116
|
+
Via:
|
117
|
+
- 1.1 varnish
|
118
|
+
Connection:
|
119
|
+
- keep-alive
|
120
|
+
X-Served-By:
|
121
|
+
- cache-hhn4067-HHN
|
122
|
+
X-Cache:
|
123
|
+
- MISS
|
124
|
+
X-Cache-Hits:
|
125
|
+
- '0'
|
126
|
+
X-Timer:
|
127
|
+
- S1574409584.489346,VS0,VE53
|
128
|
+
Vary:
|
129
|
+
- Origin,Accept-Encoding
|
130
|
+
body:
|
131
|
+
encoding: ASCII-8BIT
|
132
|
+
string: '{"message":"success"}'
|
133
|
+
http_version:
|
134
|
+
recorded_at: Fri, 22 Nov 2019 07:59:44 GMT
|
135
|
+
- request:
|
136
|
+
method: get
|
137
|
+
uri: "<BRAZE_REST_URL>/subscription/user/status?api_key=<BRAZE_REST_API_KEY>&external_id%5B%5D=test-gem-001&external_id%5B%5D=test-gem-002&external_id%5B%5D=test-gem-003"
|
138
|
+
body:
|
139
|
+
encoding: US-ASCII
|
140
|
+
string: ''
|
141
|
+
headers:
|
142
|
+
Content-Type:
|
143
|
+
- application/json
|
144
|
+
Accept:
|
145
|
+
- application/json
|
146
|
+
User-Agent:
|
147
|
+
- Braze Ruby gem v0.2.2
|
148
|
+
Accept-Encoding:
|
149
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
150
|
+
response:
|
151
|
+
status:
|
152
|
+
code: 200
|
153
|
+
message: OK
|
154
|
+
headers:
|
155
|
+
Cache-Control:
|
156
|
+
- max-age=0, private, must-revalidate
|
157
|
+
Content-Type:
|
158
|
+
- application/json
|
159
|
+
Etag:
|
160
|
+
- W/"c07db3553c76472c579e5181e73ec603"
|
161
|
+
Server:
|
162
|
+
- nginx
|
163
|
+
Strict-Transport-Security:
|
164
|
+
- max-age=0; includeSubDomains
|
165
|
+
- max-age=31536000; includeSubDomains
|
166
|
+
X-Ratelimit-Limit:
|
167
|
+
- '250000'
|
168
|
+
X-Ratelimit-Remaining:
|
169
|
+
- '249984'
|
170
|
+
X-Ratelimit-Reset:
|
171
|
+
- '1574409600'
|
172
|
+
X-Request-Id:
|
173
|
+
- 49cde848-ee57-46f7-9692-5023fb8be287
|
174
|
+
X-Runtime:
|
175
|
+
- '0.024667'
|
176
|
+
Accept-Ranges:
|
177
|
+
- bytes
|
178
|
+
- bytes
|
179
|
+
Age:
|
180
|
+
- '0'
|
181
|
+
- '0'
|
182
|
+
Content-Length:
|
183
|
+
- '228'
|
184
|
+
Date:
|
185
|
+
- Fri, 22 Nov 2019 07:59:44 GMT
|
186
|
+
Via:
|
187
|
+
- 1.1 varnish
|
188
|
+
Connection:
|
189
|
+
- keep-alive
|
190
|
+
X-Served-By:
|
191
|
+
- cache-hhn4043-HHN
|
192
|
+
X-Cache:
|
193
|
+
- MISS
|
194
|
+
X-Cache-Hits:
|
195
|
+
- '0'
|
196
|
+
X-Timer:
|
197
|
+
- S1574409585.753149,VS0,VE28
|
198
|
+
Vary:
|
199
|
+
- Origin,Accept-Encoding
|
200
|
+
body:
|
201
|
+
encoding: ASCII-8BIT
|
202
|
+
string: '{"users":[{"email":null,"phone":null,"external_id":"test-gem-001","subscription_groups":[{"id":"0201b87a-ef6e-4410-9412-a298c4c1206d","name":"Test
|
203
|
+
Subscription Group","channel":"email","status":"Subscribed"}]},{"email":null,"phone":null,"external_id":"test-gem-002","subscription_groups":[{"id":"0201b87a-ef6e-4410-9412-a298c4c1206d","name":"Test
|
204
|
+
Subscription Group","channel":"email","status":"Unsubscribed"}]},{"email":null,"phone":null,"external_id":"test-gem-003","subscription_groups":[]}],"total_count":3,"message":"success"}'
|
205
|
+
http_version:
|
206
|
+
recorded_at: Fri, 22 Nov 2019 07:59:44 GMT
|
207
|
+
recorded_with: VCR 5.0.0
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'canvas' do
|
@@ -12,4 +14,13 @@ RSpec.describe 'canvas' do
|
|
12
14
|
)
|
13
15
|
end
|
14
16
|
end
|
17
|
+
|
18
|
+
describe 'details' do
|
19
|
+
it 'returns error when no canvas', vcr: true do
|
20
|
+
response = api.canvas_details(
|
21
|
+
canvas_id: 'non-existing'
|
22
|
+
)
|
23
|
+
expect(response.status).to eq(400)
|
24
|
+
end
|
25
|
+
end
|
15
26
|
end
|