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 +4 -4
- data/lib/curlyrest/version.rb +1 -1
- data/lib/curlyrest.rb +66 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbb2f83698784b3cc1b3d3d8fad3299df4846ea6
|
4
|
+
data.tar.gz: 4373dfd5697dcda8e9ddd93f58a5d7435b93bdaf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6ad630e9dca0fb33334eba4871a45115bb1e0858af4f8382e75d4b9b97c70f73582d53d8bd9ca8b3da31de89e8dc044c271bbed4fe9fb058962374309c5bae4
|
7
|
+
data.tar.gz: 1142de7a0f62631c9c276305f1feeb833249f229c7d4cd6f60f204575733b9971e590e21c5817f19269964defa21be13ab6916dab10609fd01f8f9df90db0e8c
|
data/lib/curlyrest/version.rb
CHANGED
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 = "
|
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,
|
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.
|
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-
|
11
|
+
date: 2018-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|