drip-ruby 3.4.1 → 3.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 187036a01190c508e9f62cdb1f0b3feed1f1f48f57b401abbb94f4c76e47f72b
4
- data.tar.gz: 5f346605646162e11440de3094602e279d615595d3e3cd6ede2b3739a3893d35
3
+ metadata.gz: a315464f308426c87063f971108b2861cc7f6beacf9320fdf16af17bed73fc16
4
+ data.tar.gz: 70cd96e4f9ea7a463f73ae83990e8cfda6519563bbcaec9b4942d1862d7613b8
5
5
  SHA512:
6
- metadata.gz: 84d6861c2a98a80e42c385a84b8a09cca7f556029778acd9bd1e8bcc468b2fb85a09ebb3f4c6192ee9069617e3cb1c57ab26996cc5b04fc843db68144c7b583e
7
- data.tar.gz: 454de61b3f91e50a7f2948b6698c8e824f8e8a702ff96fb482c2542c0d1437fea5fe051da856f19f9f1340676a5b48c33da3815f989ab7bdbac52829c9f8034c
6
+ metadata.gz: b9d9dba42336127f9cfc9269ab57ff0f7af9fac620fb735d0749cb40ecf76a96175e25bee9b2a55ef94fd4ba038d10ae0fa371c9b0b0d7ded6f09f4169bbcb93
7
+ data.tar.gz: 1991082152cbf1bfc5748a37e6108418313871ea5272e8ad42b33a2be4081174b282601deedd027f8187df2e513071ea80636423f77168fffe2d2f42dba82af2
@@ -0,0 +1,39 @@
1
+ Addresses: [ECI-XXXX](https://dripcom.atlassian.net/browse/ECI-XXXX)
2
+
3
+ plus links to any other relevant tickets, PRs, JIRAs, wikis, e.g.:
4
+
5
+ Followup to: https://github.com/DripEmail/drip-ruby/12437
6
+
7
+ Also any pair partners that worked on this code:
8
+
9
+ Co-authored-by: Jesse Developer <jesse.developer@drip.com>
10
+
11
+ ## Background
12
+
13
+ Explain the context and why you're making that change. What is the
14
+ problem you're trying to solve? In some cases there is not a problem
15
+ and this can be thought of being the motivation for your change.
16
+
17
+ ## Modification
18
+
19
+ Describe the modifications you've done.
20
+
21
+ ## Result
22
+
23
+ What will change as a result of your pull request? Note that sometimes
24
+ this section is unnecessary because it is self-explanatory based on
25
+ the solution.
26
+
27
+ ## Additional Context
28
+
29
+ Does the PR title contain the JIRA key if using JIRA?
30
+
31
+ ## How to verify/test
32
+
33
+ Aside from automated tests that should be part of every PR,
34
+ what are the steps necessary to independently confirm that the PR
35
+ is correct in staging or production? Describe here the steps did you do
36
+ to manually smoke test or verify the functionality from the point of
37
+ view of a non-developer.
38
+
39
+ This section may not apply to all PRs.
data/CHANGELOG.md CHANGED
@@ -6,10 +6,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- [master]: https://github.com/DripEmail/drip-ruby/compare/v3.4.1...HEAD
9
+ [master]: https://github.com/DripEmail/drip-ruby/compare/v3.4.2...HEAD
10
10
 
11
11
  - Your contribution here!
12
12
 
13
+ ## [3.4.2] - 2021-04-25
14
+
15
+ [3.4.2]: https://github.com/DripEmail/drip-ruby/compare/v3.4.1...v3.4.2
16
+
17
+ ### Changed
18
+ - `Drip::Client#create_or_update_subscriber` can be used with a BigCommerce Subscriber ID as the required key
19
+
13
20
  ## [3.4.1] - 2020-04-21
14
21
 
15
22
  [3.4.1]: https://github.com/DripEmail/drip-ruby/compare/v3.4.0...v3.4.1
@@ -35,8 +35,10 @@ module Drip
35
35
  #
36
36
  # email - Optional. The String subscriber email address. (Deprecated in favor of a hash argument)
37
37
  # options - A Hash of options.
38
- # - email - Required (or id). Lookup the subscriber by email.
39
- # - id - Required (or email). Lookup the subscriber by Drip ID.
38
+ # - email - Required (or id, or bigcommerce_subscriber_id).
39
+ # Lookup the subscriber by email.
40
+ # - id - Required (or email, or bigcommerce_subscriber_id).
41
+ # Lookup the subscriber by Drip ID.
40
42
  # - new_email - Optional. A new email address for the subscriber.
41
43
  # If provided and a subscriber with the email above
42
44
  # does not exist, this address will be used to
@@ -45,6 +47,9 @@ module Drip
45
47
  # format). Defaults to Etc/UTC.
46
48
  # - custom_fields - Optional. A Hash of custom field data.
47
49
  # - tags - Optional. An Array of tags.
50
+ # - external_ids - Optional. A hash of relevant ids for other integrations.
51
+ # For unsubscribing BigCommerce subscribers, a bigcommerce_subscriber_id
52
+ # can be provided in external_ids rather than email or id as the required field.
48
53
  #
49
54
  # Returns a Drip::Response.
50
55
  # See https://www.getdrip.com/docs/rest-api#create_or_update_subscriber
@@ -52,7 +57,7 @@ module Drip
52
57
  data = {}
53
58
  data[:email] = args[0] if args[0].is_a? String
54
59
  data.merge!(args.last) if args.last.is_a? Hash
55
- raise ArgumentError, 'email: or id: parameter required' if !data.key?(:email) && !data.key?(:id)
60
+ raise ArgumentError, 'email: or id: or bigcommerce_subscriber_id: parameter required' if missing_subscriber_identifier(data)
56
61
  make_json_api_request :post, "v2/#{account_id}/subscribers", private_generate_resource("subscribers", data)
57
62
  end
58
63
 
@@ -152,5 +157,12 @@ module Drip
152
157
  make_json_api_request :post, "v2/#{account_id}/subscribers/#{CGI.escape id_or_email}/unsubscribe_all"
153
158
  end
154
159
  end
160
+
161
+ private
162
+
163
+ def missing_subscriber_identifier(data)
164
+ external_ids = data[:external_ids] || {}
165
+ !data.key?(:email) && !data.key?(:id) && !external_ids.key?("bigcommerce_subscriber_id")
166
+ end
155
167
  end
156
168
  end
data/lib/drip/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Drip
4
- VERSION = "3.4.1"
4
+ VERSION = "3.4.2"
5
5
  end
@@ -84,6 +84,12 @@ class Drip::Client::SubscribersTest < Drip::TestCase
84
84
  assert_equal expected, @client.create_or_update_subscriber(id: 123456)
85
85
  assert_requested :post, "https://api.getdrip.com/v2/12345/subscribers", body: '{"subscribers":[{"id":123456}]}', times: 1
86
86
  end
87
+
88
+ should "allow request with bigcommerce_subscriber_id keyword argument" do
89
+ expected = Drip::Response.new(@response_status, JSON.parse(@response_body))
90
+ assert_equal expected, @client.create_or_update_subscriber(external_ids: { "bigcommerce_subscriber_id" => "2" })
91
+ assert_requested :post, "https://api.getdrip.com/v2/12345/subscribers", body: '{"subscribers":[{"external_ids":{"bigcommerce_subscriber_id":"2"}}]}', times: 1
92
+ end
87
93
  end
88
94
 
89
95
  context "#create_or_update_subscribers" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drip-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 3.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Drip
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-04 00:00:00.000000000 Z
11
+ date: 2021-05-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple wrapper for the Drip API
14
14
  email:
@@ -17,6 +17,7 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".github/pull_request_template.md"
20
21
  - ".gitignore"
21
22
  - ".rubocop.yml"
22
23
  - ".rubocop_todo.yml"
@@ -141,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
142
  - !ruby/object:Gem::Version
142
143
  version: '0'
143
144
  requirements: []
144
- rubygems_version: 3.1.2
145
+ rubygems_version: 3.1.4
145
146
  signing_key:
146
147
  specification_version: 4
147
148
  summary: A Ruby gem for interacting with the Drip API