braze_ruby 0.4.2 → 0.8.0

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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +26 -0
  3. data/.github/workflows/gem_credentials +2 -0
  4. data/.github/workflows/release.yml +20 -0
  5. data/.gitignore +12 -19
  6. data/.standard.yml +1 -0
  7. data/Gemfile +1 -2
  8. data/LICENSE.txt +17 -18
  9. data/README.md +63 -6
  10. data/Rakefile +2 -1
  11. data/bin/release +16 -0
  12. data/braze_ruby.gemspec +28 -31
  13. data/lib/braze_ruby/api.rb +17 -15
  14. data/lib/braze_ruby/configuration.rb +13 -0
  15. data/lib/braze_ruby/deprecated.rb +4 -5
  16. data/lib/braze_ruby/endpoints/campaigns.rb +8 -0
  17. data/lib/braze_ruby/endpoints/remove_email_addresses_from_spam.rb +19 -0
  18. data/lib/braze_ruby/endpoints/remove_external_ids.rb +2 -2
  19. data/lib/braze_ruby/endpoints/rename_external_ids.rb +2 -2
  20. data/lib/braze_ruby/endpoints/schedule_messages.rb +3 -5
  21. data/lib/braze_ruby/endpoints/subscription.rb +0 -1
  22. data/lib/braze_ruby/endpoints.rb +11 -10
  23. data/lib/braze_ruby/http.rb +12 -9
  24. data/lib/braze_ruby/rest/base.rb +3 -3
  25. data/lib/braze_ruby/rest/canvas_details.rb +1 -1
  26. data/lib/braze_ruby/rest/create_user_aliases.rb +2 -2
  27. data/lib/braze_ruby/rest/delete_trigger_campaign_schedule.rb +15 -0
  28. data/lib/braze_ruby/rest/delete_users.rb +2 -2
  29. data/lib/braze_ruby/rest/email_hard_bounces.rb +1 -1
  30. data/lib/braze_ruby/rest/email_status.rb +3 -3
  31. data/lib/braze_ruby/rest/email_unsubscribes.rb +1 -1
  32. data/lib/braze_ruby/rest/export_users.rb +7 -7
  33. data/lib/braze_ruby/rest/identify_users.rb +2 -2
  34. data/lib/braze_ruby/rest/list_segments.rb +1 -1
  35. data/lib/braze_ruby/rest/remove_email_addresses_from_spam.rb +13 -0
  36. data/lib/braze_ruby/rest/remove_external_ids.rb +2 -2
  37. data/lib/braze_ruby/rest/rename_external_ids.rb +2 -2
  38. data/lib/braze_ruby/rest/schedule_messages.rb +6 -6
  39. data/lib/braze_ruby/rest/scheduled_broadcasts.rb +20 -0
  40. data/lib/braze_ruby/rest/send_messages.rb +3 -3
  41. data/lib/braze_ruby/rest/subscription_status_get.rb +1 -1
  42. data/lib/braze_ruby/rest/subscription_status_set.rb +1 -1
  43. data/lib/braze_ruby/rest/subscription_user_status.rb +1 -1
  44. data/lib/braze_ruby/rest/track_users.rb +4 -4
  45. data/lib/braze_ruby/rest/trigger_campaign_schedule.rb +18 -0
  46. data/lib/braze_ruby/rest/trigger_campaign_send.rb +1 -1
  47. data/lib/braze_ruby/rest/trigger_canvas_send.rb +1 -1
  48. data/lib/braze_ruby/rest.rb +24 -20
  49. data/lib/braze_ruby/version.rb +1 -1
  50. data/lib/braze_ruby.rb +17 -4
  51. metadata +51 -197
  52. data/.github/workflows/ci.yml +0 -30
  53. data/Gemfile.lock +0 -82
  54. data/spec/braze_ruby/api_spec.rb +0 -6
  55. data/spec/braze_ruby/endpoints/delete_users_spec.rb +0 -31
  56. data/spec/braze_ruby/endpoints/track_users_spec.rb +0 -74
  57. data/spec/braze_ruby/http_spec.rb +0 -48
  58. data/spec/braze_ruby/rest/create_user_aliases_spec.rb +0 -23
  59. data/spec/braze_ruby/rest/delete_users_spec.rb +0 -22
  60. data/spec/braze_ruby/rest/email_status_spec.rb +0 -20
  61. data/spec/braze_ruby/rest/export_users_spec.rb +0 -21
  62. data/spec/braze_ruby/rest/identify_users_spec.rb +0 -23
  63. data/spec/braze_ruby/rest/remove_external_ids_spec.rb +0 -22
  64. data/spec/braze_ruby/rest/rename_external_ids_spec.rb +0 -22
  65. data/spec/braze_ruby/rest/schedule_messages_spec.rb +0 -37
  66. data/spec/braze_ruby/rest/send_messages_spec.rb +0 -30
  67. data/spec/braze_ruby/rest/track_users_spec.rb +0 -27
  68. data/spec/factories.rb +0 -38
  69. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +0 -71
  70. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +0 -69
  71. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +0 -71
  72. data/spec/fixtures/responses/create_user_aliases/unauthorized/responds_with_unauthorized.yml +0 -67
  73. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_created.yml +0 -71
  74. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_success_message.yml +0 -71
  75. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +0 -68
  76. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +0 -71
  77. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +0 -71
  78. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +0 -71
  79. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +0 -71
  80. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +0 -71
  81. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +0 -71
  82. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +0 -75
  83. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +0 -75
  84. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +0 -75
  85. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +0 -72
  86. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +0 -71
  87. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +0 -68
  88. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +0 -71
  89. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +0 -71
  90. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +0 -81
  91. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +0 -81
  92. data/spec/fixtures/responses/remove_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  93. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_created.yml +0 -69
  94. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_success_message.yml +0 -69
  95. data/spec/fixtures/responses/rename_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  96. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_created.yml +0 -69
  97. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_success_message.yml +0 -69
  98. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +0 -68
  99. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +0 -71
  100. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +0 -71
  101. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +0 -68
  102. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +0 -71
  103. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +0 -71
  104. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +0 -71
  105. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +0 -68
  106. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +0 -139
  107. 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 +0 -211
  108. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +0 -199
  109. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +0 -211
  110. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +0 -70
  111. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +0 -73
  112. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +0 -73
  113. data/spec/integrations/campaigns_spec.rb +0 -19
  114. data/spec/integrations/canvas_spec.rb +0 -28
  115. data/spec/integrations/create_user_aliases_spec.rb +0 -32
  116. data/spec/integrations/delete_users_spec.rb +0 -32
  117. data/spec/integrations/email_status_spec.rb +0 -38
  118. data/spec/integrations/email_sync_spec.rb +0 -31
  119. data/spec/integrations/export_users_spec.rb +0 -29
  120. data/spec/integrations/identify_users_spec.rb +0 -32
  121. data/spec/integrations/list_segments_spec.rb +0 -21
  122. data/spec/integrations/remove_external_ids_spec.rb +0 -33
  123. data/spec/integrations/rename_external_ids_spec.rb +0 -37
  124. data/spec/integrations/schedule_messages_spec.rb +0 -34
  125. data/spec/integrations/send_messages_spec.rb +0 -33
  126. data/spec/integrations/subscription_spec.rb +0 -149
  127. data/spec/integrations/track_users_spec.rb +0 -38
  128. data/spec/spec_helper.rb +0 -25
  129. data/spec/support/factory_bot.rb +0 -12
  130. data/spec/support/integrations.rb +0 -27
  131. data/spec/support/vcr.rb +0 -20
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.get('/canvas/details', {
14
+ http.get("/canvas/details", {
15
15
  **@params
16
16
  })
17
17
  end
@@ -4,8 +4,8 @@ module BrazeRuby
4
4
  module REST
5
5
  class CreateUserAliases < Base
6
6
  def perform(user_aliases: [])
7
- http.post '/users/alias/new', {
8
- 'user_aliases': user_aliases
7
+ http.post "/users/alias/new", {
8
+ user_aliases: user_aliases
9
9
  }
10
10
  end
11
11
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class DeleteTriggerCampaignSchedule < Base
6
+ def perform(campaign_id:, schedule_id:)
7
+ http.post(
8
+ "/campaigns/trigger/schedule/delete",
9
+ campaign_id: campaign_id,
10
+ schedule_id: schedule_id
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,8 +4,8 @@ module BrazeRuby
4
4
  module REST
5
5
  class DeleteUsers < Base
6
6
  def perform(external_ids: [])
7
- http.post '/users/delete', {
8
- 'external_ids': external_ids
7
+ http.post "/users/delete", {
8
+ external_ids: external_ids
9
9
  }
10
10
  end
11
11
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.get('/email/hard_bounces', {
14
+ http.get("/email/hard_bounces", {
15
15
  **@params
16
16
  })
17
17
  end
@@ -12,9 +12,9 @@ module BrazeRuby
12
12
  end
13
13
 
14
14
  def perform
15
- http.post '/email/status', {
16
- 'email': email,
17
- 'subscription_state': status
15
+ http.post "/email/status", {
16
+ email: email,
17
+ subscription_state: status
18
18
  }
19
19
  end
20
20
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.get('/email/unsubscribes', {
14
+ http.get("/email/unsubscribes", {
15
15
  **params
16
16
  })
17
17
  end
@@ -4,22 +4,22 @@ module BrazeRuby
4
4
  module REST
5
5
  class ExportUsers < Base
6
6
  def perform(external_ids: nil, segment_id: nil, **options)
7
- return export_users_by_ids(external_ids) if external_ids
7
+ return export_users_by_ids(external_ids, options) if external_ids
8
8
 
9
9
  export_users_by_segment(segment_id, options) if segment_id
10
10
  end
11
11
 
12
12
  private
13
13
 
14
- def export_users_by_ids(external_ids)
15
- http.post '/users/export/ids', {
16
- 'external_ids': external_ids
17
- }
14
+ def export_users_by_ids(external_ids, options)
15
+ http.post "/users/export/ids", {
16
+ external_ids: external_ids
17
+ }.merge(options)
18
18
  end
19
19
 
20
20
  def export_users_by_segment(segment_id, options)
21
- http.post '/users/export/segment', {
22
- 'segment_id': segment_id
21
+ http.post "/users/export/segment", {
22
+ segment_id: segment_id
23
23
  }.merge(options)
24
24
  end
25
25
  end
@@ -4,8 +4,8 @@ module BrazeRuby
4
4
  module REST
5
5
  class IdentifyUsers < Base
6
6
  def perform(aliases_to_identify: [])
7
- http.post '/users/identify', {
8
- 'aliases_to_identify': aliases_to_identify
7
+ http.post "/users/identify", {
8
+ aliases_to_identify: aliases_to_identify
9
9
  }
10
10
  end
11
11
  end
@@ -4,7 +4,7 @@ module BrazeRuby
4
4
  module REST
5
5
  class ListSegments < Base
6
6
  def perform
7
- http.get '/segments/list'
7
+ http.get "/segments/list"
8
8
  end
9
9
  end
10
10
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class RemoveEmailAddressesFromSpam < Base
6
+ def perform(email: [])
7
+ http.post "/email/spam/remove", {
8
+ email: email
9
+ }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -4,8 +4,8 @@ module BrazeRuby
4
4
  module REST
5
5
  class RemoveExternalIds < Base
6
6
  def perform(external_ids: [])
7
- http.post '/users/external_ids/remove', {
8
- 'external_ids': external_ids
7
+ http.post "/users/external_ids/remove", {
8
+ external_ids: external_ids
9
9
  }
10
10
  end
11
11
  end
@@ -4,8 +4,8 @@ module BrazeRuby
4
4
  module REST
5
5
  class RenameExternalIds < Base
6
6
  def perform(external_id_renames: [])
7
- http.post '/users/external_ids/rename', {
8
- 'external_id_renames': external_id_renames
7
+ http.post "/users/external_ids/rename", {
8
+ external_id_renames: external_id_renames
9
9
  }
10
10
  end
11
11
  end
@@ -14,13 +14,13 @@ module BrazeRuby
14
14
  end
15
15
 
16
16
  def perform
17
- http.post '/messages/schedule/create', {
18
- 'external_user_ids': external_user_ids,
19
- 'schedule': {
20
- 'time': time,
21
- 'in_local_time': in_local_time
17
+ http.post "/messages/schedule/create", {
18
+ external_user_ids: external_user_ids,
19
+ schedule: {
20
+ time: time,
21
+ in_local_time: in_local_time
22
22
  },
23
- 'messages': messages
23
+ messages: messages
24
24
  }
25
25
  end
26
26
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class ScheduledBroadcasts < Base
6
+ attr_reader :params
7
+
8
+ def initialize(api_key, braze_url, options, **params)
9
+ @params = params
10
+ super api_key, braze_url, options
11
+ end
12
+
13
+ def perform
14
+ http.post "/messages/scheduled_broadcasts", {
15
+ **@params
16
+ }
17
+ end
18
+ end
19
+ end
20
+ end
@@ -12,9 +12,9 @@ module BrazeRuby
12
12
  end
13
13
 
14
14
  def perform
15
- http.post '/messages/send', {
16
- 'messages': messages,
17
- 'external_user_ids': external_user_ids
15
+ http.post "/messages/send", {
16
+ messages: messages,
17
+ external_user_ids: external_user_ids
18
18
  }
19
19
  end
20
20
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.get('/subscription/status/get', {
14
+ http.get("/subscription/status/get", {
15
15
  **params
16
16
  })
17
17
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.post('/subscription/status/set', {
14
+ http.post("/subscription/status/set", {
15
15
  **params
16
16
  })
17
17
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.get('/subscription/user/status', {
14
+ http.get("/subscription/user/status", {
15
15
  **params
16
16
  })
17
17
  end
@@ -4,10 +4,10 @@ module BrazeRuby
4
4
  module REST
5
5
  class TrackUsers < Base
6
6
  def perform(attributes: [], events: [], purchases: [])
7
- http.post '/users/track', {
8
- 'attributes': attributes,
9
- 'events': events,
10
- 'purchases': purchases
7
+ http.post "/users/track", {
8
+ attributes: attributes,
9
+ events: events,
10
+ purchases: purchases
11
11
  }
12
12
  end
13
13
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class TriggerCampaignSchedule < Base
6
+ attr_reader :params
7
+
8
+ def initialize(api_key, braze_url, options, **params)
9
+ @params = params
10
+ super api_key, braze_url, options
11
+ end
12
+
13
+ def perform
14
+ http.post("/campaigns/trigger/schedule/create", @params)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.post('/campaigns/trigger/send', @params)
14
+ http.post("/campaigns/trigger/send", @params)
15
15
  end
16
16
  end
17
17
  end
@@ -11,7 +11,7 @@ module BrazeRuby
11
11
  end
12
12
 
13
13
  def perform
14
- http.post('/canvas/trigger/send', {
14
+ http.post("/canvas/trigger/send", {
15
15
  **@params
16
16
  })
17
17
  end
@@ -1,22 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'braze_ruby/rest/base'
4
- require 'braze_ruby/rest/track_users'
5
- require 'braze_ruby/rest/send_messages'
6
- require 'braze_ruby/rest/schedule_messages'
7
- require 'braze_ruby/rest/email_status'
8
- require 'braze_ruby/rest/email_hard_bounces'
9
- require 'braze_ruby/rest/email_unsubscribes'
10
- require 'braze_ruby/rest/export_users'
11
- require 'braze_ruby/rest/list_segments'
12
- require 'braze_ruby/rest/delete_users'
13
- require 'braze_ruby/rest/trigger_campaign_send'
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'
19
- require 'braze_ruby/rest/identify_users'
20
- require 'braze_ruby/rest/create_user_aliases'
21
- require 'braze_ruby/rest/rename_external_ids'
22
- require 'braze_ruby/rest/remove_external_ids'
3
+ require "braze_ruby/rest/base"
4
+ require "braze_ruby/rest/track_users"
5
+ require "braze_ruby/rest/send_messages"
6
+ require "braze_ruby/rest/schedule_messages"
7
+ require "braze_ruby/rest/scheduled_broadcasts"
8
+ require "braze_ruby/rest/email_status"
9
+ require "braze_ruby/rest/email_hard_bounces"
10
+ require "braze_ruby/rest/email_unsubscribes"
11
+ require "braze_ruby/rest/export_users"
12
+ require "braze_ruby/rest/list_segments"
13
+ require "braze_ruby/rest/delete_users"
14
+ require "braze_ruby/rest/trigger_campaign_schedule"
15
+ require "braze_ruby/rest/delete_trigger_campaign_schedule"
16
+ require "braze_ruby/rest/trigger_campaign_send"
17
+ require "braze_ruby/rest/trigger_canvas_send"
18
+ require "braze_ruby/rest/canvas_details"
19
+ require "braze_ruby/rest/subscription_status_set"
20
+ require "braze_ruby/rest/subscription_status_get"
21
+ require "braze_ruby/rest/subscription_user_status"
22
+ require "braze_ruby/rest/identify_users"
23
+ require "braze_ruby/rest/create_user_aliases"
24
+ require "braze_ruby/rest/rename_external_ids"
25
+ require "braze_ruby/rest/remove_external_ids"
26
+ require "braze_ruby/rest/remove_email_addresses_from_spam"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrazeRuby
4
- VERSION = '0.4.2'.freeze
4
+ VERSION = "0.8.0"
5
5
  end
data/lib/braze_ruby.rb CHANGED
@@ -1,9 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'braze_ruby/version'
3
+ require "braze_ruby/version"
4
+ require "braze_ruby/configuration"
4
5
 
5
6
  module BrazeRuby
6
- autoload :API, 'braze_ruby/api'
7
- autoload :REST, 'braze_ruby/rest'
8
- autoload :Endpoints, 'braze_ruby/endpoints'
7
+ autoload :API, "braze_ruby/api"
8
+ autoload :REST, "braze_ruby/rest"
9
+ autoload :Endpoints, "braze_ruby/endpoints"
10
+
11
+ class << self
12
+ attr_writer :configuration
13
+ end
14
+
15
+ def self.configuration
16
+ @configuration ||= Configuration.new
17
+ end
18
+
19
+ def self.configure
20
+ yield(configuration)
21
+ end
9
22
  end