drip-ruby 3.2.0 → 3.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/pull_request_template.md +39 -0
- data/.rubocop.yml +5 -1
- data/.rubocop_todo.yml +17 -9
- data/.travis.yml +2 -4
- data/CHANGELOG.md +51 -1
- data/Gemfile +12 -0
- data/README.md +6 -0
- data/Rakefile +2 -0
- data/drip-ruby.gemspec +4 -11
- data/lib/drip.rb +2 -0
- data/lib/drip/client.rb +48 -66
- data/lib/drip/client/accounts.rb +4 -2
- data/lib/drip/client/broadcasts.rb +4 -2
- data/lib/drip/client/campaign_subscriptions.rb +3 -1
- data/lib/drip/client/campaigns.rb +7 -5
- data/lib/drip/client/configuration.rb +30 -0
- data/lib/drip/client/conversions.rb +4 -2
- data/lib/drip/client/custom_fields.rb +3 -1
- data/lib/drip/client/events.rb +6 -4
- data/lib/drip/client/forms.rb +4 -2
- data/lib/drip/client/http_client.rb +66 -0
- data/lib/drip/client/orders.rb +5 -3
- data/lib/drip/client/shopper_activity.rb +80 -0
- data/lib/drip/client/subscribers.rb +30 -16
- data/lib/drip/client/tags.rb +5 -3
- data/lib/drip/client/users.rb +17 -0
- data/lib/drip/client/webhooks.rb +7 -5
- data/lib/drip/client/workflow_triggers.rb +5 -3
- data/lib/drip/client/workflows.rb +8 -6
- data/lib/drip/collection.rb +2 -0
- data/lib/drip/collections.rb +2 -0
- data/lib/drip/collections/accounts.rb +2 -0
- data/lib/drip/collections/broadcasts.rb +2 -0
- data/lib/drip/collections/campaign_subscriptions.rb +2 -0
- data/lib/drip/collections/campaigns.rb +2 -0
- data/lib/drip/collections/errors.rb +2 -0
- data/lib/drip/collections/orders.rb +2 -0
- data/lib/drip/collections/purchases.rb +2 -0
- data/lib/drip/collections/subscribers.rb +2 -0
- data/lib/drip/collections/tags.rb +2 -0
- data/lib/drip/collections/webhooks.rb +2 -0
- data/lib/drip/collections/workflow_triggers.rb +2 -0
- data/lib/drip/collections/workflows.rb +2 -0
- data/lib/drip/errors.rb +2 -0
- data/lib/drip/request.rb +33 -0
- data/lib/drip/resource.rb +2 -0
- data/lib/drip/resources.rb +2 -0
- data/lib/drip/resources/account.rb +2 -0
- data/lib/drip/resources/broadcast.rb +2 -0
- data/lib/drip/resources/campaign.rb +2 -0
- data/lib/drip/resources/campaign_subscription.rb +2 -0
- data/lib/drip/resources/error.rb +2 -0
- data/lib/drip/resources/order.rb +2 -0
- data/lib/drip/resources/purchase.rb +2 -0
- data/lib/drip/resources/subscriber.rb +2 -0
- data/lib/drip/resources/tag.rb +2 -0
- data/lib/drip/resources/webhook.rb +2 -0
- data/lib/drip/resources/workflow.rb +2 -0
- data/lib/drip/resources/workflow_trigger.rb +2 -0
- data/lib/drip/response.rb +15 -13
- data/lib/drip/version.rb +3 -1
- data/test/drip/client/accounts_test.rb +2 -0
- data/test/drip/client/broadcasts_test.rb +2 -0
- data/test/drip/client/campaign_subscriptions_test.rb +2 -0
- data/test/drip/client/campaigns_test.rb +2 -0
- data/test/drip/client/configuration_test.rb +112 -0
- data/test/drip/client/conversions_test.rb +2 -0
- data/test/drip/client/custom_fields_test.rb +2 -0
- data/test/drip/client/events_test.rb +2 -0
- data/test/drip/client/forms_test.rb +2 -0
- data/test/drip/client/http_client_test.rb +98 -0
- data/test/drip/client/orders_test.rb +2 -0
- data/test/drip/client/shopper_activity_test.rb +189 -0
- data/test/drip/client/subscribers_test.rb +8 -0
- data/test/drip/client/tags_test.rb +2 -0
- data/test/drip/client/users_test.rb +24 -0
- data/test/drip/client/webhooks_test.rb +2 -0
- data/test/drip/client/workflow_triggers_test.rb +2 -0
- data/test/drip/client/workflows_test.rb +2 -0
- data/test/drip/client_test.rb +34 -97
- data/test/drip/collection_test.rb +16 -0
- data/test/drip/collections/account_test.rb +10 -0
- data/test/drip/collections/broadcasts_test.rb +10 -0
- data/test/drip/collections/campaign_subscriptions_test.rb +10 -0
- data/test/drip/collections/campaigns_test.rb +10 -0
- data/test/drip/collections/errors_test.rb +10 -0
- data/test/drip/collections/orders_test.rb +10 -0
- data/test/drip/collections/purchases_test.rb +10 -0
- data/test/drip/collections/tags_test.rb +10 -0
- data/test/drip/collections/webhooks_test.rb +10 -0
- data/test/drip/collections/workflow_triggers_test.rb +10 -0
- data/test/drip/collections/workflows_test.rb +10 -0
- data/test/drip/collections_test.rb +2 -0
- data/test/drip/request_test.rb +60 -0
- data/test/drip/resource_test.rb +14 -0
- data/test/drip/resources/account_test.rb +2 -0
- data/test/drip/resources/order_test.rb +2 -0
- data/test/drip/resources/subscriber_test.rb +2 -0
- data/test/drip/resources/tag_test.rb +15 -0
- data/test/drip/resources_test.rb +2 -0
- data/test/drip/response_test.rb +35 -0
- data/test/test_helper.rb +5 -0
- metadata +50 -109
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a315464f308426c87063f971108b2861cc7f6beacf9320fdf16af17bed73fc16
|
4
|
+
data.tar.gz: 70cd96e4f9ea7a463f73ae83990e8cfda6519563bbcaec9b4942d1862d7613b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/.rubocop.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
3
|
AllCops:
|
4
|
-
TargetRubyVersion: '2.
|
4
|
+
TargetRubyVersion: '2.3'
|
5
5
|
Exclude:
|
6
6
|
- 'test/fixtures/**/*'
|
7
7
|
|
@@ -32,3 +32,7 @@ Layout/MultilineMethodCallIndentation:
|
|
32
32
|
Metrics/ClassLength:
|
33
33
|
Exclude:
|
34
34
|
- 'test/**/*'
|
35
|
+
|
36
|
+
Metrics/BlockLength:
|
37
|
+
Exclude:
|
38
|
+
- 'test/**/*'
|
data/.rubocop_todo.yml
CHANGED
@@ -1,11 +1,18 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2019-05-02 16:45:21 -0500 using RuboCop version 0.67.2.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
+
# Offense count: 2
|
10
|
+
# Cop supports --auto-correct.
|
11
|
+
Layout/EmptyLineAfterGuardClause:
|
12
|
+
Exclude:
|
13
|
+
- 'lib/drip/client/subscribers.rb'
|
14
|
+
- 'lib/drip/response.rb'
|
15
|
+
|
9
16
|
# Offense count: 2
|
10
17
|
# Cop supports --auto-correct.
|
11
18
|
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
|
@@ -14,17 +21,18 @@ Lint/UnusedMethodArgument:
|
|
14
21
|
- 'lib/drip/client.rb'
|
15
22
|
- 'lib/drip/collection.rb'
|
16
23
|
|
17
|
-
# Offense count:
|
24
|
+
# Offense count: 2
|
18
25
|
Metrics/AbcSize:
|
19
|
-
Max:
|
26
|
+
Max: 25
|
20
27
|
|
21
|
-
# Offense count:
|
28
|
+
# Offense count: 8
|
22
29
|
# Configuration parameters: CountComments, ExcludedMethods.
|
30
|
+
# ExcludedMethods: refine
|
23
31
|
Metrics/BlockLength:
|
24
32
|
Max: 46
|
25
33
|
|
26
34
|
# Offense count: 4
|
27
|
-
# Configuration parameters: CountComments.
|
35
|
+
# Configuration parameters: CountComments, ExcludedMethods.
|
28
36
|
Metrics/MethodLength:
|
29
37
|
Max: 26
|
30
38
|
|
@@ -39,14 +47,14 @@ Performance/InefficientHashSearch:
|
|
39
47
|
- 'lib/drip/resource.rb'
|
40
48
|
- 'lib/drip/response.rb'
|
41
49
|
|
42
|
-
# Offense count:
|
50
|
+
# Offense count: 24
|
43
51
|
# Cop supports --auto-correct.
|
44
52
|
# Configuration parameters: AutoCorrect, EnforcedStyle.
|
45
53
|
# SupportedStyles: nested, compact
|
46
54
|
Style/ClassAndModuleChildren:
|
47
55
|
Enabled: false
|
48
56
|
|
49
|
-
# Offense count:
|
57
|
+
# Offense count: 44
|
50
58
|
Style/Documentation:
|
51
59
|
Enabled: false
|
52
60
|
|
@@ -81,13 +89,13 @@ Style/MissingRespondToMissing:
|
|
81
89
|
- 'lib/drip/resource.rb'
|
82
90
|
- 'lib/drip/response.rb'
|
83
91
|
|
84
|
-
# Offense count:
|
92
|
+
# Offense count: 12
|
85
93
|
# Cop supports --auto-correct.
|
86
94
|
# Configuration parameters: Strict.
|
87
95
|
Style/NumericLiterals:
|
88
96
|
MinDigits: 8
|
89
97
|
|
90
|
-
# Offense count:
|
98
|
+
# Offense count: 700
|
91
99
|
# Cop supports --auto-correct.
|
92
100
|
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
|
93
101
|
# SupportedStyles: single_quotes, double_quotes
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,10 +6,60 @@ 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.2
|
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
|
+
|
20
|
+
## [3.4.1] - 2020-04-21
|
21
|
+
|
22
|
+
[3.4.1]: https://github.com/DripEmail/drip-ruby/compare/v3.4.0...v3.4.1
|
23
|
+
|
24
|
+
### Fixed
|
25
|
+
- Support for Ruby 2.7 hash parameters.
|
26
|
+
|
27
|
+
## [3.4.0] - 2020-04-21
|
28
|
+
|
29
|
+
[3.4.0]: https://github.com/DripEmail/drip-ruby/compare/v3.3.1...v3.4.0
|
30
|
+
|
31
|
+
### Added
|
32
|
+
- Support for the user endpoint in the REST API
|
33
|
+
|
34
|
+
### Changed
|
35
|
+
- `Drip::Client#create_cart_activity_event` can be used with visitor UUID
|
36
|
+
|
37
|
+
## [3.3.1] - 2019-05-28
|
38
|
+
|
39
|
+
[3.3.1]: https://github.com/DripEmail/drip-ruby/compare/v3.3.0...v3.3.1
|
40
|
+
|
41
|
+
### Fixed
|
42
|
+
- Correct shopper activity batch orders API to wrap things in an `orders` key.
|
43
|
+
|
44
|
+
## [3.3.0] - 2019-05-24
|
45
|
+
|
46
|
+
[3.3.0]: https://github.com/DripEmail/drip-ruby/compare/v3.2.0...v3.3.0
|
47
|
+
|
48
|
+
### Added
|
49
|
+
- Support for the cart, order, and product endpoints in the shopper activity API.
|
50
|
+
|
51
|
+
### Changed
|
52
|
+
- `Drip::Client#url_prefix` parameter no longer includes `/vN` part of the URL in order to prepare for Shopper Activity API. This breaks backwards compatibility for this option, but there is no expected production usage of this parameter.
|
53
|
+
- `Drip::Client#get`, `Drip::Client#post`, `Drip::Client#put`, and `Drip::Client#delete` are deprecated. If you are using these to hit a Drip API endpoint, please file a ticket or PR to fix the use case.
|
54
|
+
- `Drip::Client#generate_resource` is deprecated and will be removed in a future version.
|
55
|
+
- `Drip::Client#content_type` is deprecated and will be removed in a future version. It is no longer used internally, effective immediately.
|
56
|
+
- When using the block form of parameter initialization, a configuration object is provided instead of the client itself.
|
57
|
+
- Calling configuration setters on `Drip::Client` is deprecated.
|
58
|
+
- `Drip::Client::REDIRECT_LIMIT` constant is now private. This is supposed to be an implementation detail and shouldn't leak.
|
59
|
+
|
60
|
+
### Removed
|
61
|
+
- Drop support for Ruby 2.1.
|
62
|
+
|
13
63
|
## [3.2.0] - 2018-08-15
|
14
64
|
|
15
65
|
[3.2.0]: https://github.com/DripEmail/drip-ruby/compare/v3.1.1...v3.2.0
|
data/Gemfile
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in drip-ruby.gemspec
|
4
6
|
gemspec
|
7
|
+
|
8
|
+
gem "bundler", ">= 1.6", "< 3"
|
9
|
+
gem "minitest", "~> 5.0"
|
10
|
+
gem "mocha", "~> 1.1"
|
11
|
+
gem "rake", "~> 12.0"
|
12
|
+
gem "rubocop", "~> 0.67.2"
|
13
|
+
gem "rubocop-performance", "~> 1.1.0"
|
14
|
+
gem "shoulda-context", "~> 1.0"
|
15
|
+
gem "simplecov", require: false
|
16
|
+
gem "webmock", "~> 3.4"
|
data/README.md
CHANGED
@@ -150,6 +150,12 @@ as methods on the client object. The following methods are currently available:
|
|
150
150
|
| Apply a tag | `#apply_tag(email, tag)` |
|
151
151
|
| Remove a tag | `#remove_tag(email, tag)` |
|
152
152
|
|
153
|
+
|
154
|
+
#### Users
|
155
|
+
| Actions | Methods |
|
156
|
+
| :------------------------- | :--------------------------------------------------- |
|
157
|
+
| Fetch user | `#user` |
|
158
|
+
|
153
159
|
#### Webhooks
|
154
160
|
|
155
161
|
| Actions | Methods |
|
data/Rakefile
CHANGED
data/drip-ruby.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
lib = File.expand_path('../lib', __FILE__)
|
4
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -7,8 +8,8 @@ require 'drip/version'
|
|
7
8
|
Gem::Specification.new do |spec|
|
8
9
|
spec.name = "drip-ruby"
|
9
10
|
spec.version = Drip::VERSION
|
10
|
-
spec.authors = ["
|
11
|
-
spec.email = ["
|
11
|
+
spec.authors = ["Drip"]
|
12
|
+
spec.email = ["support@drip.com"]
|
12
13
|
spec.summary = 'A Ruby gem for interacting with the Drip API'
|
13
14
|
spec.description = 'A simple wrapper for the Drip API'
|
14
15
|
spec.homepage = "http://github.com/DripEmail/drip-ruby"
|
@@ -19,13 +20,5 @@ Gem::Specification.new do |spec|
|
|
19
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
21
|
spec.require_paths = ["lib"]
|
21
22
|
|
22
|
-
spec.required_ruby_version = '>= 2.
|
23
|
-
|
24
|
-
spec.add_development_dependency "bundler", "~> 1.6"
|
25
|
-
spec.add_development_dependency "minitest", "~> 5.0"
|
26
|
-
spec.add_development_dependency "mocha", "~> 1.1"
|
27
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
28
|
-
spec.add_development_dependency "rubocop", "~> 0.56.0"
|
29
|
-
spec.add_development_dependency "shoulda-context", "~> 1.0"
|
30
|
-
spec.add_development_dependency "webmock", "~> 3.4"
|
23
|
+
spec.required_ruby_version = '>= 2.3'
|
31
24
|
end
|
data/lib/drip.rb
CHANGED
data/lib/drip/client.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "drip/errors"
|
4
|
+
require "drip/request"
|
2
5
|
require "drip/response"
|
3
6
|
require "drip/client/accounts"
|
4
7
|
require "drip/client/broadcasts"
|
5
8
|
require "drip/client/campaigns"
|
6
9
|
require "drip/client/campaign_subscriptions"
|
10
|
+
require "drip/client/configuration"
|
7
11
|
require "drip/client/conversions"
|
8
12
|
require "drip/client/custom_fields"
|
9
13
|
require "drip/client/events"
|
10
14
|
require "drip/client/forms"
|
15
|
+
require "drip/client/http_client"
|
11
16
|
require "drip/client/orders"
|
17
|
+
require "drip/client/shopper_activity"
|
12
18
|
require "drip/client/subscribers"
|
13
19
|
require "drip/client/tags"
|
20
|
+
require "drip/client/users"
|
14
21
|
require "drip/client/webhooks"
|
15
22
|
require "drip/client/workflows"
|
16
23
|
require "drip/client/workflow_triggers"
|
@@ -29,88 +36,76 @@ module Drip
|
|
29
36
|
include Events
|
30
37
|
include Forms
|
31
38
|
include Orders
|
39
|
+
include ShopperActivity
|
32
40
|
include Subscribers
|
33
41
|
include Tags
|
42
|
+
include Users
|
34
43
|
include Webhooks
|
35
44
|
include Workflows
|
36
45
|
include WorkflowTriggers
|
37
46
|
|
38
|
-
|
47
|
+
Drip::Client::Configuration::CONFIGURATION_FIELDS.each do |config_key|
|
48
|
+
define_method(config_key) do
|
49
|
+
@config.public_send(config_key)
|
50
|
+
end
|
51
|
+
|
52
|
+
setter_name = "#{config_key}=".to_sym
|
53
|
+
define_method(setter_name) do |val|
|
54
|
+
warn "[DEPRECATED] Setting configuration on Drip::Client after initialization will be removed in a future version"
|
55
|
+
@config.public_send(setter_name, val)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
JSON_API_CONTENT_TYPE = "application/vnd.api+json"
|
60
|
+
private_constant :JSON_API_CONTENT_TYPE
|
39
61
|
|
40
|
-
|
62
|
+
JSON_CONTENT_TYPE = "application/json"
|
63
|
+
private_constant :JSON_CONTENT_TYPE
|
41
64
|
|
42
65
|
def initialize(options = {})
|
43
|
-
@
|
44
|
-
@
|
45
|
-
@api_key = options[:api_key]
|
46
|
-
@url_prefix = options[:url_prefix] || "https://api.getdrip.com/v2/"
|
47
|
-
@http_open_timeout = options[:http_open_timeout]
|
48
|
-
@http_timeout = options[:http_timeout]
|
49
|
-
yield(self) if block_given?
|
66
|
+
@config = Drip::Client::Configuration.new(**options)
|
67
|
+
yield(@config) if block_given?
|
50
68
|
end
|
51
69
|
|
52
70
|
def generate_resource(key, *args)
|
53
|
-
|
71
|
+
warn "[DEPRECATED] Drip::Client#generate_resource is deprecated and will be removed in a future version"
|
72
|
+
private_generate_resource(key, *args)
|
54
73
|
end
|
55
74
|
|
56
75
|
def content_type
|
57
|
-
|
76
|
+
warn "[DEPRECATED] Drip::Client#content_type is deprecated and will be removed in a future version"
|
77
|
+
JSON_API_CONTENT_TYPE
|
58
78
|
end
|
59
79
|
|
60
|
-
|
61
|
-
|
80
|
+
Drip::Request::VERB_CLASS_MAPPING.keys.each do |verb|
|
81
|
+
define_method(verb) do |path, options = {}|
|
82
|
+
warn "[DEPRECATED] Drip::Client##{verb} please use the API endpoint specific methods"
|
83
|
+
make_json_api_request(verb, "v2/#{path}", options)
|
84
|
+
end
|
62
85
|
end
|
63
86
|
|
64
|
-
|
65
|
-
make_request(Net::HTTP::Post, make_uri(url), options)
|
66
|
-
end
|
87
|
+
private
|
67
88
|
|
68
|
-
def
|
69
|
-
make_request(
|
89
|
+
def make_json_api_request(http_verb, path, options = {})
|
90
|
+
make_request Drip::Request.new(http_verb, make_uri(path), options, JSON_API_CONTENT_TYPE)
|
70
91
|
end
|
71
92
|
|
72
|
-
def
|
73
|
-
make_request(
|
93
|
+
def make_json_request(http_verb, path, options = {})
|
94
|
+
make_request Drip::Request.new(http_verb, make_uri(path), options, JSON_CONTENT_TYPE)
|
74
95
|
end
|
75
96
|
|
76
|
-
|
97
|
+
def private_generate_resource(key, *args)
|
98
|
+
# No reason for this to be part of the public API, so making a duplicate method to make it private.
|
99
|
+
{ key => args }
|
100
|
+
end
|
77
101
|
|
78
102
|
def make_uri(path)
|
79
|
-
URI(url_prefix) + URI(path)
|
103
|
+
URI(@config.url_prefix) + URI(path)
|
80
104
|
end
|
81
105
|
|
82
|
-
def make_request(
|
83
|
-
raise TooManyRedirectsError, 'too many HTTP redirects' if step >= REDIRECT_LIMIT
|
84
|
-
|
106
|
+
def make_request(drip_request)
|
85
107
|
build_response do
|
86
|
-
|
87
|
-
if verb_klass == Net::HTTP::Get
|
88
|
-
uri.query = URI.encode_www_form(options)
|
89
|
-
end
|
90
|
-
|
91
|
-
request = verb_klass.new uri
|
92
|
-
|
93
|
-
unless verb_klass == Net::HTTP::Get
|
94
|
-
request.body = options.to_json
|
95
|
-
end
|
96
|
-
|
97
|
-
request['User-Agent'] = "Drip Ruby v#{Drip::VERSION}"
|
98
|
-
request['Content-Type'] = content_type
|
99
|
-
request['Accept'] = "*/*"
|
100
|
-
|
101
|
-
if access_token
|
102
|
-
request['Authorization'] = "Bearer #{access_token}"
|
103
|
-
else
|
104
|
-
request.basic_auth api_key, ""
|
105
|
-
end
|
106
|
-
|
107
|
-
response = http.request request
|
108
|
-
if response.is_a?(Net::HTTPRedirection)
|
109
|
-
return make_request(verb_klass, URI(response["Location"]), options, step + 1)
|
110
|
-
else
|
111
|
-
response
|
112
|
-
end
|
113
|
-
end
|
108
|
+
Drip::Client::HTTPClient.new(@config).make_request(drip_request)
|
114
109
|
end
|
115
110
|
end
|
116
111
|
|
@@ -120,18 +115,5 @@ module Drip
|
|
120
115
|
rescue JSON::ParserError
|
121
116
|
Drip::Response.new(response.code.to_i, nil)
|
122
117
|
end
|
123
|
-
|
124
|
-
def connection_options(uri_scheme)
|
125
|
-
options = { use_ssl: uri_scheme == "https" }
|
126
|
-
|
127
|
-
if @http_open_timeout
|
128
|
-
options[:open_timeout] = @http_open_timeout
|
129
|
-
options[:ssl_timeout] = @http_open_timeout
|
130
|
-
end
|
131
|
-
|
132
|
-
options[:read_timeout] = @http_timeout if @http_timeout
|
133
|
-
|
134
|
-
options
|
135
|
-
end
|
136
118
|
end
|
137
119
|
end
|