braze_ruby 0.2.2 → 0.3.1

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.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: adcffccc751c8231b0084d858454d36d5b3a034b128bd4c7c7d72e5867a27b4b
4
- data.tar.gz: 2e0bf1111244eb7c356f7b8b9edcf9cf146c7f38cf3687f771b9d45953fb4925
3
+ metadata.gz: d13af3abbb4e98372a950bf22a32729721f50e061b5c4259a0ca8441ffc1b718
4
+ data.tar.gz: 0ba7370dd8c8bf783643722ff0531a62128deb2361c4b7ce2cd0124659073c26
5
5
  SHA512:
6
- metadata.gz: ae3ccf92edd2f7f82c31812964eba85a57af09f1bf944338491f03bcc2d8e5831f7c21594a7e07a2aa5df8f0f1d732721d3aa7b9147c9380c0f3c4178f99c7e0
7
- data.tar.gz: 9c1046684d733a8aab55c2a65a97ff950340df129c44472089424f4a43099609975c96770d39c8a3a896cd05868867ea8b203d7f2f27a5c90204634af6c23ba3
6
+ metadata.gz: 12ce012904c603fa5c7d202f46bbbc3b5b0df057a07edb7f04ab18a820154eebba5628f23a3f43ace34b47a03a99415de1911429c6d9a3175b061522ca29025e
7
+ data.tar.gz: acb859868636273fa6a8b07370e31805cc17760e8f40b392f0141a3ce963b1e0c902209297d7dea2750d69bed6fa86ab55629ae7d50f2a8997a6b31ffe276207
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  .config
5
5
  .yardoc
6
6
  .ruby-version
7
+ .ruby-gemset
7
8
  .env
8
9
  InstalledFiles
9
10
  _yardoc
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in braze_ruby.gemspec
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- braze_ruby (0.2.2)
5
- faraday
4
+ braze_ruby (0.3.1)
5
+ faraday (~> 0.17.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -23,7 +23,7 @@ GEM
23
23
  dotenv (2.7.5)
24
24
  factory_bot (5.1.0)
25
25
  activesupport (>= 4.2.0)
26
- faraday (0.15.4)
26
+ faraday (0.17.1)
27
27
  multipart-post (>= 1.2, < 3)
28
28
  hashdiff (1.0.0)
29
29
  i18n (1.6.0)
@@ -66,13 +66,13 @@ PLATFORMS
66
66
  DEPENDENCIES
67
67
  braze_ruby!
68
68
  bundler (>= 1.3)
69
- dotenv
70
- factory_bot
71
- pry
72
- rake
73
- rspec
74
- vcr
75
- webmock
69
+ dotenv (~> 2.7.5)
70
+ factory_bot (~> 5.1.0)
71
+ pry (~> 0.12.2)
72
+ rake (~> 12.3.3)
73
+ rspec (~> 3.8.0)
74
+ vcr (~> 5.0.0)
75
+ webmock (~> 3.7.5)
76
76
 
77
77
  BUNDLED WITH
78
78
  2.0.2
data/README.md CHANGED
@@ -163,6 +163,30 @@ Delete Braze Users with an array of external_ids
163
163
  api.delete_users([1, 2, 3])
164
164
  ```
165
165
 
166
+ ### Subscription groups
167
+
168
+ #### Get subscription group status for users by id
169
+ ```ruby
170
+ api.subscription_user_status(external_id: [1])
171
+ ```
172
+
173
+ #### Get users status for a specific subscription group
174
+ ```ruby
175
+ api.subscription_status_get(
176
+ external_id: [1],
177
+ subscription_group_id: 'some-uuid'
178
+ )
179
+ ```
180
+
181
+ #### Set user status for a specific subscription group
182
+ ```ruby
183
+ api.subscription_status_set(
184
+ external_id: [1],
185
+ subscription_group_id: 'some-uuid',
186
+ subscription_state: 'subscribed|unsubscribed'
187
+ )
188
+ ```
189
+
166
190
  ## Debugging
167
191
 
168
192
  The BRAZE_RUBY_DEBUG environment variable will trigger full printouts of the Faraday gem's HTTP requests and responses.
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
@@ -25,14 +25,14 @@ 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', '~> 0.17.1'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '>= 1.3'
31
- spec.add_development_dependency 'rake'
32
- spec.add_development_dependency 'rspec'
33
- spec.add_development_dependency 'dotenv'
34
- spec.add_development_dependency 'vcr'
35
- spec.add_development_dependency 'webmock'
36
- spec.add_development_dependency 'pry'
37
- spec.add_development_dependency 'factory_bot'
31
+ spec.add_development_dependency 'rake', '~> 12.3.3'
32
+ spec.add_development_dependency 'rspec', '~> 3.8.0'
33
+ spec.add_development_dependency 'dotenv', '~> 2.7.5'
34
+ spec.add_development_dependency 'vcr', '~> 5.0.0'
35
+ spec.add_development_dependency 'webmock', '~> 3.7.5'
36
+ spec.add_development_dependency 'pry', '~> 0.12.2'
37
+ spec.add_development_dependency 'factory_bot', '~> 5.1.0'
38
38
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'braze_ruby/version'
2
4
 
3
5
  module BrazeRuby
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'braze_ruby/deprecated'
2
4
  require 'braze_ruby/endpoints/track_users'
3
5
  require 'braze_ruby/endpoints/send_messages'
@@ -7,6 +9,7 @@ require 'braze_ruby/endpoints/email_sync'
7
9
  require 'braze_ruby/endpoints/delete_users'
8
10
  require 'braze_ruby/endpoints/campaigns'
9
11
  require 'braze_ruby/endpoints/canvas'
12
+ require 'braze_ruby/endpoints/subscription'
10
13
 
11
14
  module BrazeRuby
12
15
  class API
@@ -20,6 +23,7 @@ module BrazeRuby
20
23
  include BrazeRuby::Endpoints::DeleteUsers
21
24
  include BrazeRuby::Endpoints::Campaigns
22
25
  include BrazeRuby::Endpoints::Canvas
26
+ include BrazeRuby::Endpoints::Subscription
23
27
 
24
28
  def export_users(**payload)
25
29
  BrazeRuby::REST::ExportUsers.new(braze_url).perform(api_key, payload)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Deprecated
3
5
  def track(attribute, events = [], purchases = [])
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'braze_ruby/endpoints/email_status'
2
4
  require 'braze_ruby/endpoints/email_sync'
3
5
  require 'braze_ruby/endpoints/schedule_messages'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module Campaigns
@@ -1,9 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module Canvas
4
6
  def trigger_canvas_send(**payload)
5
7
  BrazeRuby::REST::TriggerCanvasSend.new(api_key, braze_url, payload).perform
6
8
  end
9
+
10
+ def canvas_details(**payload)
11
+ BrazeRuby::REST::CanvasDetails.new(api_key, braze_url, payload).perform
12
+ end
7
13
  end
8
14
  end
9
15
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module DeleteUsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module EmailStatus
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module EmailSync
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module ScheduleMessages
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module SendMessages
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module Endpoints
5
+ module Subscription
6
+ def subscription_status_set(**payload)
7
+ BrazeRuby::REST::SubscriptionStatusSet.new(api_key, braze_url, payload).perform
8
+ end
9
+
10
+ def subscription_status_get(**payload)
11
+ BrazeRuby::REST::SubscriptionStatusGet.new(api_key, braze_url, payload).perform
12
+ end
13
+
14
+
15
+ def subscription_user_status(**payload)
16
+ BrazeRuby::REST::SubscriptionUserStatus.new(api_key, braze_url, payload).perform
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module Endpoints
3
5
  module TrackUsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'faraday'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'braze_ruby/rest/base'
2
4
  require 'braze_ruby/rest/track_users'
3
5
  require 'braze_ruby/rest/send_messages'
@@ -10,3 +12,7 @@ require 'braze_ruby/rest/list_segments'
10
12
  require 'braze_ruby/rest/delete_users'
11
13
  require 'braze_ruby/rest/trigger_campaign_send'
12
14
  require 'braze_ruby/rest/trigger_canvas_send'
15
+ require 'braze_ruby/rest/canvas_details'
16
+ require 'braze_ruby/rest/subscription_status_set'
17
+ require 'braze_ruby/rest/subscription_status_get'
18
+ require 'braze_ruby/rest/subscription_user_status'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'braze_ruby/http'
2
4
 
3
5
  module BrazeRuby
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class CanvasDetails < Base
6
+ attr_reader :api_key, :params
7
+
8
+ def initialize(api_key, braze_url, **params)
9
+ @api_key = api_key
10
+ @params = params
11
+ super braze_url
12
+ end
13
+
14
+ def perform
15
+ http.get('/canvas/details', {
16
+ 'api_key': api_key,
17
+ **@params
18
+ })
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class DeleteUsers < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class EmailHardBounces < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class EmailStatus < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class EmailUnsubscribes < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class ExportUsers < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class ListSegments < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class ScheduleMessages < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class SendMessages < Base
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class SubscriptionStatusGet < Base
6
+ attr_reader :api_key, :params
7
+
8
+ def initialize(api_key, braze_url, **params)
9
+ @api_key = api_key
10
+ @params = params
11
+ super braze_url
12
+ end
13
+
14
+ def perform
15
+ http.get('/subscription/status/get', {
16
+ 'api_key': api_key,
17
+ **params
18
+ })
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class SubscriptionStatusSet < Base
6
+ attr_reader :api_key, :params
7
+
8
+ def initialize(api_key, braze_url, **params)
9
+ @api_key = api_key
10
+ @params = params
11
+ super braze_url
12
+ end
13
+
14
+ def perform
15
+ http.post('/subscription/status/set', {
16
+ 'api_key': api_key,
17
+ **params
18
+ })
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class SubscriptionUserStatus < Base
6
+ attr_reader :api_key, :params
7
+
8
+ def initialize(api_key, braze_url, **params)
9
+ @api_key = api_key
10
+ @params = params
11
+ super braze_url
12
+ end
13
+
14
+ def perform
15
+ http.get('/subscription/user/status', {
16
+ 'api_key': api_key,
17
+ **params
18
+ })
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class TrackUsers < Base