drip-ruby 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e94a763ab5337f4f242daa28a135553e23969965
4
- data.tar.gz: aaa3aa129287f0f640dd03e96dcd441abb362c98
3
+ metadata.gz: cde072743a9010ff142889179cd1c5cb57eb6009
4
+ data.tar.gz: 2c94bb250107e5412a1e85ca418845ce81242711
5
5
  SHA512:
6
- metadata.gz: 5f8426121809e826beded4b6715b3d986d5a446d82f02881cf539d0a2393755bd00a03e71437a0e71c631bd2a7417882edfd360f16e52048f6dc4dd0fa50f3a4
7
- data.tar.gz: f28420d43b416f076c3f61df6b6da1224983124c7181b96d0e8db142fdcd260704a5c13214f4553b18d493dc3cfdfd56da156b64e6334d6fe5cfac5c0208a952
6
+ metadata.gz: 229a86bbc7153395d73659ea272c9d2467678bf812ca2c687903701969dfd55281eed4c0c45e7eebd536bd3755f5ac31c6312d4f92e13fadac985c9ec804880d
7
+ data.tar.gz: 6032350979b07376d2de554ac22675a77d8a56a20492431df760e5f02793ce6e4a164013daa76bb9bbe02f8e85b42415a5054a473fa68b8aac3722bd88f8f7e4
@@ -1,6 +1,9 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  rvm:
4
- - 2.3.4
4
+ - 2.5
5
+ - 2.4
6
+ - 2.3
7
+ - 2.2
5
8
  - 2.1
6
9
  - jruby-19mode
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [3.1.0] - 2018-06-05
8
+
9
+ [3.1.0]: https://github.com/DripEmail/drip-ruby/compare/v3.0.0...v3.1.0
10
+
11
+ ### Fixed
12
+ - [#46](https://github.com/DripEmail/drip-ruby/pull/46): Fix verb class equality check - [@marcinbunsch](https://github.com/marcinbunsch)
13
+
14
+ ### Added
15
+ - [#43](https://github.com/DripEmail/drip-ruby/pull/43): Additional timeout parameters for client - [@tboyko](https://github.com/tboyko)
16
+
7
17
  ## [3.0.0] - 2018-05-29
8
18
 
9
19
  [3.0.0]: https://github.com/DripEmail/drip-ruby/compare/v2.0.0...v3.0.0
data/README.md CHANGED
@@ -122,8 +122,6 @@ as methods on the client object. The following methods are currently available:
122
122
 
123
123
  #### Orders
124
124
 
125
- **Note:** The beta purchases endpoint has been deprecated and its methods have been removed from the gem except `create_purchase`, which now sends requests to the Order creation endpoint [here](https://developer.drip.com/#orders)
126
-
127
125
  | Actions | Methods |
128
126
  | :------------------------- | :--------------------------------------------------- |
129
127
  | Create or update an order | `#create_or_update_order(email, options = {})` |
@@ -37,13 +37,15 @@ module Drip
37
37
 
38
38
  REDIRECT_LIMIT = 10
39
39
 
40
- attr_accessor :access_token, :api_key, :account_id, :url_prefix
40
+ attr_accessor :access_token, :api_key, :account_id, :url_prefix, :http_open_timeout, :http_timeout
41
41
 
42
42
  def initialize(options = {})
43
43
  @account_id = options[:account_id]
44
44
  @access_token = options[:access_token]
45
45
  @api_key = options[:api_key]
46
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]
47
49
  yield(self) if block_given?
48
50
  end
49
51
 
@@ -81,14 +83,14 @@ module Drip
81
83
  raise TooManyRedirectsError, 'too many HTTP redirects' if step >= REDIRECT_LIMIT
82
84
 
83
85
  build_response do
84
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
85
- if verb_klass.is_a? Net::HTTP::Get
86
+ Net::HTTP.start(uri.host, uri.port, connection_options(uri.scheme)) do |http|
87
+ if verb_klass == Net::HTTP::Get
86
88
  uri.query = URI.encode_www_form(options)
87
89
  end
88
90
 
89
91
  request = verb_klass.new uri
90
92
 
91
- unless verb_klass.is_a? Net::HTTP::Get
93
+ unless verb_klass == Net::HTTP::Get
92
94
  request.body = options.to_json
93
95
  end
94
96
 
@@ -116,5 +118,18 @@ module Drip
116
118
  response = yield
117
119
  Drip::Response.new(response.code.to_i, response.body)
118
120
  end
121
+
122
+ def connection_options(uri_scheme)
123
+ options = { use_ssl: uri_scheme == "https" }
124
+
125
+ if @http_open_timeout
126
+ options[:open_timeout] = @http_open_timeout
127
+ options[:ssl_timeout] = @http_open_timeout
128
+ end
129
+
130
+ options[:read_timeout] = @http_timeout if @http_timeout
131
+
132
+ options
133
+ end
119
134
  end
120
135
  end
@@ -1,3 +1,3 @@
1
1
  module Drip
2
- VERSION = "3.0.0".freeze
2
+ VERSION = "3.1.0".freeze
3
3
  end
@@ -44,12 +44,16 @@ class Drip::ClientTest < Drip::TestCase
44
44
  client = Drip::Client.new(
45
45
  account_id: "1234567",
46
46
  api_key: "aaaa",
47
- access_token: "bbbb"
47
+ access_token: "bbbb",
48
+ http_open_timeout: 20,
49
+ http_timeout: 25
48
50
  )
49
51
 
50
52
  assert_equal "1234567", client.account_id
51
53
  assert_equal "aaaa", client.api_key
52
54
  assert_equal "bbbb", client.access_token
55
+ assert_equal 20, client.http_open_timeout
56
+ assert_equal 25, client.http_timeout
53
57
  end
54
58
  end
55
59
 
@@ -146,4 +150,34 @@ class Drip::ClientTest < Drip::TestCase
146
150
  assert_requested :get, "https://api.example.com/mytestpath", times: 5
147
151
  end
148
152
  end
153
+
154
+ context "given a get request" do
155
+ setup do
156
+ @client = Drip::Client.new
157
+ @response = mock
158
+ @response.stubs(:code).returns('200')
159
+ @response.stubs(:body).returns('mybody')
160
+
161
+ @http = mock
162
+ @http.expects(:request).returns(@response)
163
+
164
+ @request = mock
165
+ @request.stubs(:[]=)
166
+ @request.stubs(:basic_auth)
167
+ end
168
+
169
+ should "encode query and not set body" do
170
+ stub_request(:get, "https://api.getdrip.com/v2/testpath").
171
+ to_return(status: 200, body: "mybody")
172
+
173
+ Net::HTTP::Get.expects(:new).returns(@request)
174
+ Net::HTTP.expects(:start).yields(@http).returns(@response)
175
+
176
+ @request.expects(:body=).never
177
+ URI.expects(:encode_www_form).once
178
+
179
+ response = @client.get("testpath")
180
+ assert_equal "mybody", response.body
181
+ end
182
+ end
149
183
  end
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.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derrick Reimer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-29 00:00:00.000000000 Z
11
+ date: 2018-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler