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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +10 -10
  5. data/README.md +24 -0
  6. data/Rakefile +2 -0
  7. data/braze_ruby.gemspec +8 -8
  8. data/lib/braze_ruby.rb +2 -0
  9. data/lib/braze_ruby/api.rb +4 -0
  10. data/lib/braze_ruby/deprecated.rb +2 -0
  11. data/lib/braze_ruby/endpoints.rb +2 -0
  12. data/lib/braze_ruby/endpoints/campaigns.rb +2 -0
  13. data/lib/braze_ruby/endpoints/canvas.rb +6 -0
  14. data/lib/braze_ruby/endpoints/delete_users.rb +2 -0
  15. data/lib/braze_ruby/endpoints/email_status.rb +2 -0
  16. data/lib/braze_ruby/endpoints/email_sync.rb +2 -0
  17. data/lib/braze_ruby/endpoints/schedule_messages.rb +2 -0
  18. data/lib/braze_ruby/endpoints/send_messages.rb +2 -0
  19. data/lib/braze_ruby/endpoints/subscription.rb +20 -0
  20. data/lib/braze_ruby/endpoints/track_users.rb +2 -0
  21. data/lib/braze_ruby/http.rb +2 -0
  22. data/lib/braze_ruby/rest.rb +6 -0
  23. data/lib/braze_ruby/rest/base.rb +2 -0
  24. data/lib/braze_ruby/rest/canvas_details.rb +22 -0
  25. data/lib/braze_ruby/rest/delete_users.rb +2 -0
  26. data/lib/braze_ruby/rest/email_hard_bounces.rb +2 -0
  27. data/lib/braze_ruby/rest/email_status.rb +2 -0
  28. data/lib/braze_ruby/rest/email_unsubscribes.rb +2 -0
  29. data/lib/braze_ruby/rest/export_users.rb +2 -0
  30. data/lib/braze_ruby/rest/list_segments.rb +2 -0
  31. data/lib/braze_ruby/rest/schedule_messages.rb +2 -0
  32. data/lib/braze_ruby/rest/send_messages.rb +2 -0
  33. data/lib/braze_ruby/rest/subscription_status_get.rb +22 -0
  34. data/lib/braze_ruby/rest/subscription_status_set.rb +22 -0
  35. data/lib/braze_ruby/rest/subscription_user_status.rb +22 -0
  36. data/lib/braze_ruby/rest/track_users.rb +2 -0
  37. data/lib/braze_ruby/rest/trigger_campaign_send.rb +2 -0
  38. data/lib/braze_ruby/rest/trigger_canvas_send.rb +2 -0
  39. data/lib/braze_ruby/version.rb +3 -1
  40. data/spec/braze_ruby/api_spec.rb +2 -0
  41. data/spec/braze_ruby/endpoints/delete_users_spec.rb +2 -0
  42. data/spec/braze_ruby/endpoints/track_users_spec.rb +2 -0
  43. data/spec/braze_ruby/rest/delete_users_spec.rb +2 -0
  44. data/spec/braze_ruby/rest/email_status_spec.rb +2 -0
  45. data/spec/braze_ruby/rest/export_users_spec.rb +2 -0
  46. data/spec/braze_ruby/rest/schedule_messages_spec.rb +2 -0
  47. data/spec/braze_ruby/rest/send_messages_spec.rb +2 -0
  48. data/spec/braze_ruby/rest/track_users_spec.rb +2 -0
  49. data/spec/factories.rb +2 -0
  50. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +67 -0
  51. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +69 -0
  52. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +66 -0
  53. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +135 -0
  54. 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
  55. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +193 -0
  56. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +207 -0
  57. data/spec/integrations/campaigns_spec.rb +2 -0
  58. data/spec/integrations/canvas_spec.rb +11 -0
  59. data/spec/integrations/delete_users_spec.rb +2 -0
  60. data/spec/integrations/email_status_spec.rb +2 -0
  61. data/spec/integrations/email_sync_spec.rb +2 -0
  62. data/spec/integrations/export_users_spec.rb +2 -0
  63. data/spec/integrations/list_segments_spec.rb +2 -0
  64. data/spec/integrations/schedule_messages_spec.rb +2 -0
  65. data/spec/integrations/send_messages_spec.rb +2 -0
  66. data/spec/integrations/subscription_spec.rb +149 -0
  67. data/spec/integrations/track_users_spec.rb +2 -0
  68. data/spec/spec_helper.rb +2 -0
  69. data/spec/support/factory_bot.rb +2 -0
  70. data/spec/support/integrations.rb +2 -0
  71. data/spec/support/vcr.rb +2 -0
  72. 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 'campaigns' do
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'delete users' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'email status' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe 'email sync' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'export users' do