chuckle 1.0.5 → 1.0.6
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/README.md +4 -0
- data/lib/chuckle/curl.rb +9 -1
- data/lib/chuckle/options.rb +10 -0
- data/lib/chuckle/version.rb +1 -1
- data/test/test_headers.rb +74 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bec6990bc8d2c6749e8f14ecc609ed1fff3356d
|
4
|
+
data.tar.gz: c0ce0de38ab143ba264b935418056ea33f7e2d84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2866b58b2815ebe262f41537627db7828ff195f9c49f5a92b3b16efc939685aa7fc07b62380fc212ee7324e4186e10943cda36c7a0daf3cc7fbbcab0e14fdd9a
|
7
|
+
data.tar.gz: fc35467053e1203c3ee31e50e7b134e6a6110297bd919b04e519948332fac57f91ffe5f536b80aa1bb6abddbe81ec2015b248149b1b872b6b8455ce315582a7b
|
data/README.md
CHANGED
@@ -48,8 +48,10 @@ Pass these `Chuckle::Client.new`:
|
|
48
48
|
* **cacert** (nil) - cacert option to pass to curl
|
49
49
|
* **capath** (nil) - capath option to pass to curl
|
50
50
|
* **cookies** (false) - true to turn on cookie support
|
51
|
+
* **content_type** (application/x-www-form-urlencoded) - default content type for POST
|
51
52
|
* **expires_in** (:never) - time in seconds after which cache files should expire, or `:never` to never expire
|
52
53
|
* **insecure** (false) - true to allow insecure SSL connections
|
54
|
+
* **headers** (nil) - optional hash of headers to include for all requests. Content-Type is overwritten by the :content_type option. example: {"Referer" => "http://foo.com"}
|
53
55
|
* **nretries** (2) - number of times to retry a failing request
|
54
56
|
* **rate_limit** (1) - number of seconds between requests
|
55
57
|
* **timeout** (30) - timeout per request. Note that if `nretries` is 2 and `timeout` is 30, a failing request could take 90 seconds to truly fail.
|
@@ -58,6 +60,8 @@ Pass these `Chuckle::Client.new`:
|
|
58
60
|
|
59
61
|
## Changelog
|
60
62
|
|
63
|
+
* 1.0.6 (May 15, 2015) - added support for setting arbitrary headers (@pattymac)
|
64
|
+
* 1.0.5 (Jan 30, 2015) - added support for setting content type (@pattymac)
|
61
65
|
* 1.0.4 (Dec 6, 2014) - added support for --cacert, --capath and --insecure (@nkriege)
|
62
66
|
|
63
67
|
|
data/lib/chuckle/curl.rb
CHANGED
@@ -70,7 +70,15 @@ module Chuckle
|
|
70
70
|
|
71
71
|
if request.body
|
72
72
|
command += ["--data-binary", request.body]
|
73
|
-
|
73
|
+
end
|
74
|
+
|
75
|
+
# maintain backwards compatibility for content type
|
76
|
+
client.headers.each do |key,value|
|
77
|
+
if key == "Content-Type"
|
78
|
+
command += ["--header", "#{key}: #{value}"] if request.body
|
79
|
+
else
|
80
|
+
command += ["--header", "#{key}: #{value}"]
|
81
|
+
end
|
74
82
|
end
|
75
83
|
|
76
84
|
if client.cookies?
|
data/lib/chuckle/options.rb
CHANGED
@@ -8,6 +8,7 @@ module Chuckle
|
|
8
8
|
content_type: "application/x-www-form-urlencoded",
|
9
9
|
cookies: false,
|
10
10
|
expires_in: :never,
|
11
|
+
headers: nil,
|
11
12
|
insecure: false,
|
12
13
|
nretries: 2,
|
13
14
|
rate_limit: 1,
|
@@ -61,6 +62,15 @@ module Chuckle
|
|
61
62
|
options[:expires_in]
|
62
63
|
end
|
63
64
|
|
65
|
+
# maintain backwards compatibility for content_type
|
66
|
+
def headers
|
67
|
+
@headers ||= begin
|
68
|
+
headers = options[:headers] || {}
|
69
|
+
headers["Content-Type"] = options[:content_type] if options[:content_type]
|
70
|
+
headers
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
64
74
|
# allow insecure SSL connections?
|
65
75
|
def insecure?
|
66
76
|
options[:insecure]
|
data/lib/chuckle/version.rb
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
# these actually use the network, and get skipped unless ENV["NETWORK"].
|
4
|
+
class TestHeaders < Minitest::Test
|
5
|
+
include Helper
|
6
|
+
|
7
|
+
def test_default_headers
|
8
|
+
test_client = client(verbose: true)
|
9
|
+
assert_equal({"Content-Type"=>"application/x-www-form-urlencoded"}, test_client.headers)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_content_type
|
13
|
+
test_client = client(content_type: "text/json")
|
14
|
+
assert_equal({"Content-Type"=>"text/json"}, test_client.headers)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_arbitrary_headers
|
18
|
+
test_client = client(headers: {"Referer" => "http://foo.com"})
|
19
|
+
assert_equal test_client.headers["Referer"], "http://foo.com"
|
20
|
+
assert_equal test_client.headers["Content-Type"], "application/x-www-form-urlencoded"
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_basic_get
|
25
|
+
test_client = client(verbose: true)
|
26
|
+
request = test_client.create_request("http://httpbin.org/get")
|
27
|
+
headers = command_headers(request)
|
28
|
+
assert_equal headers, []
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def test_basic_post
|
33
|
+
request = client(verbose: true).create_request("http://httpbin.org/post", "foo")
|
34
|
+
headers = command_headers(request)
|
35
|
+
assert_equal headers, ["Content-Type: application/x-www-form-urlencoded"]
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_get_headers
|
39
|
+
request = client(headers: {"Referer" => "http://foo.com"}).create_request("http://httpbin.org/get")
|
40
|
+
headers = command_headers(request)
|
41
|
+
assert_equal headers, ["Referer: http://foo.com"]
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_post_headers
|
45
|
+
request = client(headers: {"Referer" => "http://foo.com"}).create_request("http://httpbin.org/post", "foo")
|
46
|
+
headers = command_headers(request)
|
47
|
+
assert_equal headers.sort, ["Content-Type: application/x-www-form-urlencoded", "Referer: http://foo.com"]
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def command(request)
|
53
|
+
curler = CurlStub.new(request)
|
54
|
+
curler.test_command
|
55
|
+
end
|
56
|
+
|
57
|
+
def command_headers(request)
|
58
|
+
headers = []
|
59
|
+
test_command = command(request)
|
60
|
+
test_command.each_with_index do |item, i|
|
61
|
+
if item == "--header"
|
62
|
+
headers << test_command[i+1]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
headers
|
66
|
+
end
|
67
|
+
|
68
|
+
class CurlStub < Chuckle::Curl
|
69
|
+
def test_command
|
70
|
+
command(@request)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chuckle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Doppelt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- lib/chuckle/version.rb
|
124
124
|
- test/helper.rb
|
125
125
|
- test/test_cache.rb
|
126
|
+
- test/test_headers.rb
|
126
127
|
- test/test_network.rb
|
127
128
|
- test/test_requests.rb
|
128
129
|
- test/url_file.txt
|
@@ -145,13 +146,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
146
|
version: '0'
|
146
147
|
requirements: []
|
147
148
|
rubyforge_project: chuckle
|
148
|
-
rubygems_version: 2.4.
|
149
|
+
rubygems_version: 2.4.5
|
149
150
|
signing_key:
|
150
151
|
specification_version: 4
|
151
152
|
summary: Chuckle - an http client that caches on disk.
|
152
153
|
test_files:
|
153
154
|
- test/helper.rb
|
154
155
|
- test/test_cache.rb
|
156
|
+
- test/test_headers.rb
|
155
157
|
- test/test_network.rb
|
156
158
|
- test/test_requests.rb
|
157
159
|
- test/url_file.txt
|