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
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