chuckle 1.0.3 → 1.0.4
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 +7 -0
- data/.travis.yml +1 -1
- data/README.md +5 -0
- data/Rakefile +2 -20
- data/lib/chuckle/cache.rb +1 -1
- data/lib/chuckle/curl.rb +5 -0
- data/lib/chuckle/options.rb +18 -0
- data/lib/chuckle/version.rb +1 -1
- data/test/test_network.rb +10 -0
- data/test/test_requests.rb +14 -0
- metadata +21 -38
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bb75c4f41beff84dd3b97784cdaff8241a146fc2
|
4
|
+
data.tar.gz: 638ddf1861e82e0982cbe8d04d8b415aa34c1d44
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 60e3caeccb0b6044f3528d9f97249c81a7786ffecff43e7875fc5cda6f1c9c763687f5b9b4c349e740d323a954b03d563ff025c7d1812038d5099f8ae5fe7878
|
7
|
+
data.tar.gz: 2a95541f81a21d3397ebf9a924bf590c716ce646499c070f65ccdf13c255d5e98989045522a1f6840700c619f6aa3d9c24e88d61103b61696c662faf6aea5d79
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -45,15 +45,20 @@ Pass these `Chuckle::Client.new`:
|
|
45
45
|
|
46
46
|
* **cache_dir** (~/.chuckle) - where chuckle should cache files. If HOME doesn't exist or isn't writable, it'll use `/tmp/chuckle` instead
|
47
47
|
* **cache_errors** (true) - false to not cache errors on disk (timeouts, http status >= 400, etc.)
|
48
|
+
* **cacert** (nil) - cacert option to pass to curl
|
49
|
+
* **capath** (nil) - capath option to pass to curl
|
48
50
|
* **cookies** (false) - true to turn on cookie support
|
49
51
|
* **expires_in** (:never) - time in seconds after which cache files should expire, or `:never` to never expire
|
52
|
+
* **insecure** (false) - true to allow insecure SSL connections
|
50
53
|
* **nretries** (2) - number of times to retry a failing request
|
51
54
|
* **rate_limit** (1) - number of seconds between requests
|
52
55
|
* **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.
|
53
56
|
* **user_agent** - the user agent. Defaults to the IE9 user agent.
|
54
57
|
* **verbose** (false) - if true, prints each request before fetching. Only prints network requests.
|
55
58
|
|
59
|
+
## Changelog
|
56
60
|
|
61
|
+
* 1.0.4 - added support for --cacert, --capath and --insecure (@nkriege)
|
57
62
|
|
58
63
|
|
59
64
|
## Limitations
|
data/Rakefile
CHANGED
@@ -1,26 +1,8 @@
|
|
1
|
-
require "bundler"
|
2
|
-
require "bundler/setup"
|
1
|
+
require "bundler/gem_helper"
|
3
2
|
require "rake/testtask"
|
4
3
|
require "rdoc/task"
|
5
4
|
|
6
|
-
|
7
|
-
# gem
|
8
|
-
#
|
9
|
-
|
10
|
-
task gem: :build
|
11
|
-
task :build do
|
12
|
-
system "gem build --quiet chuckle.gemspec"
|
13
|
-
end
|
14
|
-
|
15
|
-
task install: :build do
|
16
|
-
system "sudo gem install --quiet chuckle-#{Chuckle::VERSION}.gem"
|
17
|
-
end
|
18
|
-
|
19
|
-
task release: :build do
|
20
|
-
system "git tag -a #{Chuckle::VERSION} -m 'Tagging #{Chuckle::VERSION}'"
|
21
|
-
system "git push --tags"
|
22
|
-
system "gem push chuckle-#{Chuckle::VERSION}.gem"
|
23
|
-
end
|
5
|
+
Bundler::GemHelper.install_tasks
|
24
6
|
|
25
7
|
#
|
26
8
|
# test
|
data/lib/chuckle/cache.rb
CHANGED
data/lib/chuckle/curl.rb
CHANGED
@@ -79,6 +79,11 @@ module Chuckle
|
|
79
79
|
command += ["--cookie-jar", cookie_jar.path]
|
80
80
|
end
|
81
81
|
|
82
|
+
# SSL options
|
83
|
+
command += ["--cacert", client.cacert] if client.cacert
|
84
|
+
command += ["--capath", client.capath] if client.capath
|
85
|
+
command += ["--insecure"] if client.insecure?
|
86
|
+
|
82
87
|
command += ["--dump-header", headers_path]
|
83
88
|
command += ["--output", body_path]
|
84
89
|
|
data/lib/chuckle/options.rb
CHANGED
@@ -3,8 +3,11 @@ module Chuckle
|
|
3
3
|
DEFAULT_OPTIONS = {
|
4
4
|
cache_dir: nil,
|
5
5
|
cache_errors: true,
|
6
|
+
cacert: nil,
|
7
|
+
capath: nil,
|
6
8
|
cookies: false,
|
7
9
|
expires_in: :never,
|
10
|
+
insecure: false,
|
8
11
|
nretries: 2,
|
9
12
|
rate_limit: 1,
|
10
13
|
timeout: 30,
|
@@ -33,6 +36,16 @@ module Chuckle
|
|
33
36
|
options[:cache_errors]
|
34
37
|
end
|
35
38
|
|
39
|
+
# cacert to pass to curl
|
40
|
+
def cacert
|
41
|
+
options[:cacert]
|
42
|
+
end
|
43
|
+
|
44
|
+
# capath to pass to curl
|
45
|
+
def capath
|
46
|
+
options[:capath]
|
47
|
+
end
|
48
|
+
|
36
49
|
# are cookies enabled?
|
37
50
|
def cookies?
|
38
51
|
options[:cookies]
|
@@ -43,6 +56,11 @@ module Chuckle
|
|
43
56
|
options[:expires_in]
|
44
57
|
end
|
45
58
|
|
59
|
+
# allow insecure SSL connections?
|
60
|
+
def insecure?
|
61
|
+
options[:insecure]
|
62
|
+
end
|
63
|
+
|
46
64
|
# number of retries to attempt
|
47
65
|
def nretries
|
48
66
|
options[:nretries]
|
data/lib/chuckle/version.rb
CHANGED
data/test/test_network.rb
CHANGED
@@ -54,6 +54,16 @@ class TestNetwork < Minitest::Test
|
|
54
54
|
assert !File.exists?(cookie_jar), "cookie jar should've expired"
|
55
55
|
end
|
56
56
|
|
57
|
+
def test_https
|
58
|
+
response = client.get("https://httpbin.org/get")
|
59
|
+
assert_equal 200, response.code
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_https_insecure
|
63
|
+
response = client(insecure: true).get("https://httpbin.org/get")
|
64
|
+
assert_equal 200, response.code
|
65
|
+
end
|
66
|
+
|
57
67
|
def test_bin
|
58
68
|
Dir.chdir(File.expand_path("../", __FILE__))
|
59
69
|
assert_command("../bin/chuckle url_file.txt")
|
data/test/test_requests.rb
CHANGED
@@ -59,4 +59,18 @@ class TestRequests < Minitest::Test
|
|
59
59
|
assert_equal URI.parse(URL), response.uri
|
60
60
|
assert_equal "hello\n", response.body
|
61
61
|
end
|
62
|
+
|
63
|
+
def test_strange_urls
|
64
|
+
[
|
65
|
+
"gub",
|
66
|
+
"file://gub",
|
67
|
+
"file://gub/gub",
|
68
|
+
"file:///gub",
|
69
|
+
].each do |url|
|
70
|
+
response = mcurl(HTTP_200) { client.get(url) }
|
71
|
+
assert_equal 200, response.code
|
72
|
+
assert_equal URI.parse(url), response.uri
|
73
|
+
assert_equal "hello\n", response.body
|
74
|
+
end
|
75
|
+
end
|
62
76
|
end
|
metadata
CHANGED
@@ -1,110 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chuckle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Adam Doppelt
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-12-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: trollop
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: awesome_print
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '5.0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '5.0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rake
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rdoc
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
description: An http client that caches on disk.
|
@@ -115,8 +102,8 @@ executables:
|
|
115
102
|
extensions: []
|
116
103
|
extra_rdoc_files: []
|
117
104
|
files:
|
118
|
-
- .gitignore
|
119
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
120
107
|
- Gemfile
|
121
108
|
- LICENSE
|
122
109
|
- README.md
|
@@ -141,30 +128,26 @@ files:
|
|
141
128
|
- test/url_file.txt
|
142
129
|
homepage: http://github.com/gurgeous/chuckle
|
143
130
|
licenses: []
|
131
|
+
metadata: {}
|
144
132
|
post_install_message:
|
145
133
|
rdoc_options: []
|
146
134
|
require_paths:
|
147
135
|
- lib
|
148
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
137
|
requirements:
|
151
|
-
- -
|
138
|
+
- - ">="
|
152
139
|
- !ruby/object:Gem::Version
|
153
140
|
version: 1.9.0
|
154
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
-
none: false
|
156
142
|
requirements:
|
157
|
-
- -
|
143
|
+
- - ">="
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '0'
|
160
|
-
segments:
|
161
|
-
- 0
|
162
|
-
hash: -1861235699163653682
|
163
146
|
requirements: []
|
164
147
|
rubyforge_project: chuckle
|
165
|
-
rubygems_version:
|
148
|
+
rubygems_version: 2.2.2
|
166
149
|
signing_key:
|
167
|
-
specification_version:
|
150
|
+
specification_version: 4
|
168
151
|
summary: Chuckle - an http client that caches on disk.
|
169
152
|
test_files:
|
170
153
|
- test/helper.rb
|