braze_ruby 0.4.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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