curlyrest 0.1.23 → 0.1.24

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
  SHA1:
3
- metadata.gz: a6fc1f26bf94c57b4827be1b27c934d4db1306de
4
- data.tar.gz: 19d79b1e3933a07560dadb0e2c838bb7858e404c
3
+ metadata.gz: bbb2f83698784b3cc1b3d3d8fad3299df4846ea6
4
+ data.tar.gz: 4373dfd5697dcda8e9ddd93f58a5d7435b93bdaf
5
5
  SHA512:
6
- metadata.gz: d1007f46303555ce7833f64d4cfe80802da04c6ee417353dc50a6e8982d6e3cfda02cd77e2019668917d6af22f4007a8906d1088576927ae7b5426b2520f1eee
7
- data.tar.gz: 9a4b370eec79d4c8edcbab5644586b1719cbd2c74bc78979031cac3072ddab2157524b4d377376cb0f89987d0266336c8112fd80c5120ba82b774df751a4e938
6
+ metadata.gz: d6ad630e9dca0fb33334eba4871a45115bb1e0858af4f8382e75d4b9b97c70f73582d53d8bd9ca8b3da31de89e8dc044c271bbed4fe9fb058962374309c5bae4
7
+ data.tar.gz: 1142de7a0f62631c9c276305f1feeb833249f229c7d4cd6f60f204575733b9971e590e21c5817f19269964defa21be13ab6916dab10609fd01f8f9df90db0e8c
@@ -1,3 +1,3 @@
1
1
  module Curlyrest
2
- VERSION = '0.1.23'.freeze
2
+ VERSION = '0.1.24'.freeze
3
3
  end
data/lib/curlyrest.rb CHANGED
@@ -93,12 +93,13 @@ module Curlyrest
93
93
 
94
94
  # class for transmitting curl requests
95
95
  class CurlTransmitter
96
- attr_accessor :options, :headers, :line
97
- def initialize(uri, method, headers, payload)
96
+ attr_accessor :options, :headers, :line, :timeout
97
+ def initialize(uri, method, headers, payload, args)
98
98
  @payload = payload
99
99
  @method = method
100
100
  @uri = uri
101
101
  @headers, @options = calc_options(headers)
102
+ @timeout = args[:timeout]
102
103
  @line = curl_command
103
104
  end
104
105
 
@@ -120,6 +121,12 @@ module Curlyrest
120
121
  option ? " -x #{option}" : ''
121
122
  end
122
123
 
124
+ def curl_start
125
+ timeout_str = ''
126
+ timeout_str << " --max-time #{@timeout}" unless @timeout.nil?
127
+ "curl -isS -X #{@method.upcase}#{timeout_str}"
128
+ end
129
+
123
130
  def curl_headers(headers)
124
131
  ret_headers = ' '
125
132
  headers.each { |k, v| ret_headers << "-H '#{k}: #{v}' " }
@@ -127,7 +134,7 @@ module Curlyrest
127
134
  end
128
135
 
129
136
  def curl_command
130
- @line = "curl -isS -X #{@method.upcase}#{curl_proxy(@options[:proxy])}"\
137
+ @line = "#{curl_start}#{curl_proxy(@options[:proxy])}"\
131
138
  "#{curl_headers(@headers)}'#{@uri}' -d '#{curl_data(@payload)}'"
132
139
  end
133
140
 
@@ -140,8 +147,8 @@ module Curlyrest
140
147
  end
141
148
  end
142
149
 
143
- def curl_transmit(uri, method, headers, payload)
144
- ct = CurlTransmitter.new(uri, method, headers, payload)
150
+ def curl_transmit(uri, method, headers, payload, args)
151
+ ct = CurlTransmitter.new(uri, method, headers, payload, args)
145
152
  r = ct.exec_curl
146
153
  CurlResponseParser.new(r).response
147
154
  end
@@ -172,8 +179,61 @@ module RestClient
172
179
  else
173
180
  processed_headers
174
181
  end
175
- r = curl_transmit(uri, method, h, payload, &block)
182
+ r = curl_transmit(uri, method, h, payload,
183
+ timeout: open_timeout, &block)
176
184
  RestClient::Response.create(r.body, r, self)
177
185
  end
186
+
187
+ def process_cookie_args!(uri, headers, args)
188
+
189
+ # Avoid ambiguity in whether options from headers or options from
190
+ # Request#initialize should take precedence by raising ArgumentError when
191
+ # both are present. Prior versions of rest-client claimed to give
192
+ # precedence to init options, but actually gave precedence to headers.
193
+ # Avoid that mess by erroring out instead.
194
+ if headers[:cookies] && args[:cookies]
195
+ raise ArgumentError.new(
196
+ "Cannot pass :cookies in Request.new() and in headers hash")
197
+ end
198
+
199
+ cookies_data = headers.delete(:cookies) || args[:cookies]
200
+
201
+ # this method has problems if no cookies are in the request
202
+ return if cookies_data.nil?
203
+
204
+ # return copy of cookie jar as is
205
+ if cookies_data.is_a?(HTTP::CookieJar)
206
+ return cookies_data.dup
207
+ end
208
+
209
+ # convert cookies hash into a CookieJar
210
+ jar = HTTP::CookieJar.new
211
+
212
+ (cookies_data || []).each do |key, val|
213
+
214
+ # Support for Array<HTTP::Cookie> mode:
215
+ # If key is a cookie object, add it to the jar directly and assert that
216
+ # there is no separate val.
217
+ if key.is_a?(HTTP::Cookie)
218
+ if val
219
+ raise ArgumentError.new("extra cookie val: #{val.inspect}")
220
+ end
221
+
222
+ jar.add(key)
223
+ next
224
+ end
225
+
226
+ if key.is_a?(Symbol)
227
+ key = key.to_s
228
+ end
229
+
230
+ # assume implicit domain from the request URI, and set for_domain to
231
+ # permit subdomains
232
+ jar.add(HTTP::Cookie.new(key, val, domain: uri.hostname.downcase,
233
+ path: '/', for_domain: true))
234
+ end
235
+
236
+ jar
237
+ end
178
238
  end
179
239
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curlyrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-17 00:00:00.000000000 Z
11
+ date: 2018-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler