hugs 2.3.0 → 2.4.0
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.
- data/.gitignore +2 -0
- data/.rvmrc +1 -1
- data/Gemfile +1 -11
- data/Gemfile.lock +13 -13
- data/README.md +1 -1
- data/Rakefile +3 -17
- data/hugs.gemspec +21 -70
- data/lib/hugs/client.rb +9 -3
- data/lib/hugs/version.rb +3 -0
- data/test/lib/hugs/client_test.rb +173 -151
- data/test/test_helper.rb +7 -4
- metadata +25 -73
- data/VERSION +0 -1
data/.gitignore
ADDED
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm ruby-1.9.2-
|
1
|
+
rvm ruby-1.9.2-p136@hugs
|
data/Gemfile
CHANGED
@@ -1,13 +1,3 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
gem "nokogiri", "~> 1.4.4"
|
5
|
-
gem "net-http-persistent", "~> 1.4.1"
|
6
|
-
gem "multipart-post", "~> 1.0.1"
|
7
|
-
|
8
|
-
group :development, :test do
|
9
|
-
gem "rake"
|
10
|
-
gem "jeweler", "~> 1.5.1"
|
11
|
-
gem "minitest", "~> 2.0.0"
|
12
|
-
gem "webmock", "1.6.1"
|
13
|
-
end
|
3
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
hugs (2.3.0)
|
5
|
+
multipart-post (~> 1.0.1)
|
6
|
+
net-http-persistent (~> 1.4.1)
|
7
|
+
nokogiri (~> 1.4.4)
|
8
|
+
yajl-ruby (~> 0.7.9)
|
9
|
+
|
1
10
|
GEM
|
2
11
|
remote: http://rubygems.org/
|
3
12
|
specs:
|
4
13
|
addressable (2.2.2)
|
5
14
|
crack (0.1.8)
|
6
|
-
git (1.2.5)
|
7
|
-
jeweler (1.5.2)
|
8
|
-
bundler (~> 1.0.0)
|
9
|
-
git (>= 1.2.5)
|
10
|
-
rake
|
11
15
|
minitest (2.0.2)
|
12
16
|
multipart-post (1.0.1)
|
13
17
|
net-http-persistent (1.4.1)
|
@@ -16,17 +20,13 @@ GEM
|
|
16
20
|
webmock (1.6.1)
|
17
21
|
addressable (>= 2.2.2)
|
18
22
|
crack (>= 0.1.7)
|
19
|
-
yajl-ruby (0.7.
|
23
|
+
yajl-ruby (0.7.9)
|
20
24
|
|
21
25
|
PLATFORMS
|
22
26
|
ruby
|
23
27
|
|
24
28
|
DEPENDENCIES
|
25
|
-
|
26
|
-
minitest
|
27
|
-
multipart-post (~> 1.0.1)
|
28
|
-
net-http-persistent (~> 1.4.1)
|
29
|
-
nokogiri (~> 1.4.4)
|
29
|
+
hugs!
|
30
|
+
minitest
|
30
31
|
rake
|
31
|
-
webmock
|
32
|
-
yajl-ruby (~> 0.7.8)
|
32
|
+
webmock
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,23 +1,9 @@
|
|
1
|
-
require "
|
2
|
-
|
3
|
-
|
4
|
-
begin
|
5
|
-
require "jeweler"
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "hugs"
|
8
|
-
gem.summary = %Q{Hugs net-http-persistent with convenient get, delete, post, and put methods.}
|
9
|
-
gem.email = "john@dewey.ws"
|
10
|
-
gem.homepage = "http://github.com/retr0h/hugs"
|
11
|
-
gem.authors = ["retr0h"]
|
12
|
-
end
|
13
|
-
Jeweler::GemcutterTasks.new
|
14
|
-
rescue LoadError
|
15
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
16
|
-
end
|
1
|
+
require "bundler"
|
2
|
+
Bundler::GemHelper.install_tasks
|
17
3
|
|
18
4
|
require "rake/testtask"
|
19
5
|
Rake::TestTask.new(:test) do |test|
|
20
|
-
test.libs << "lib" << "test"
|
6
|
+
test.libs << "./lib" << "./test"
|
21
7
|
test.pattern = "test/**/*_test.rb"
|
22
8
|
test.verbose = true
|
23
9
|
end
|
data/hugs.gemspec
CHANGED
@@ -1,78 +1,29 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "hugs/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
6
|
+
s.name = "hugs"
|
7
|
+
s.version = Hugs::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["John Dewey"]
|
10
|
+
s.email = ["john@dewey.ws"]
|
11
|
+
s.homepage = %q{http://github.com/retr0h/hugs}
|
12
|
+
s.summary = %q{Hugs net-http-persistent with convenient get, delete, post, and put methods.}
|
9
13
|
|
10
|
-
s.
|
11
|
-
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
"LICENSE",
|
16
|
-
"README.md"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
".rvmrc",
|
20
|
-
"Gemfile",
|
21
|
-
"Gemfile.lock",
|
22
|
-
"LICENSE",
|
23
|
-
"README.md",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"hugs.gemspec",
|
27
|
-
"lib/hugs.rb",
|
28
|
-
"lib/hugs/client.rb",
|
29
|
-
"lib/hugs/errors.rb",
|
30
|
-
"test/lib/hugs/client_test.rb",
|
31
|
-
"test/lib/hugs/errors_test.rb",
|
32
|
-
"test/test_helper.rb"
|
33
|
-
]
|
34
|
-
s.homepage = %q{http://github.com/retr0h/hugs}
|
14
|
+
s.rubyforge_project = "hugs"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
35
19
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version = %q{1.3.7}
|
37
|
-
s.summary = %q{Hugs net-http-persistent with convenient get, delete, post, and put methods.}
|
38
|
-
s.test_files = [
|
39
|
-
"test/lib/hugs/client_test.rb",
|
40
|
-
"test/lib/hugs/errors_test.rb",
|
41
|
-
"test/test_helper.rb"
|
42
|
-
]
|
43
20
|
|
44
|
-
|
45
|
-
|
46
|
-
|
21
|
+
s.add_dependency "yajl-ruby", "~> 0.7.9"
|
22
|
+
s.add_dependency "nokogiri", "~> 1.4.4"
|
23
|
+
s.add_dependency "net-http-persistent", "~> 1.4.1"
|
24
|
+
s.add_dependency "multipart-post", "~> 1.0.1"
|
47
25
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
s.add_runtime_dependency(%q<net-http-persistent>, ["~> 1.4.1"])
|
52
|
-
s.add_runtime_dependency(%q<multipart-post>, ["~> 1.0.1"])
|
53
|
-
s.add_development_dependency(%q<rake>, [">= 0"])
|
54
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
|
55
|
-
s.add_development_dependency(%q<minitest>, ["~> 2.0.0"])
|
56
|
-
s.add_development_dependency(%q<webmock>, ["= 1.6.1"])
|
57
|
-
else
|
58
|
-
s.add_dependency(%q<yajl-ruby>, ["~> 0.7.8"])
|
59
|
-
s.add_dependency(%q<nokogiri>, ["~> 1.4.4"])
|
60
|
-
s.add_dependency(%q<net-http-persistent>, ["~> 1.4.1"])
|
61
|
-
s.add_dependency(%q<multipart-post>, ["~> 1.0.1"])
|
62
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
63
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
64
|
-
s.add_dependency(%q<minitest>, ["~> 2.0.0"])
|
65
|
-
s.add_dependency(%q<webmock>, ["= 1.6.1"])
|
66
|
-
end
|
67
|
-
else
|
68
|
-
s.add_dependency(%q<yajl-ruby>, ["~> 0.7.8"])
|
69
|
-
s.add_dependency(%q<nokogiri>, ["~> 1.4.4"])
|
70
|
-
s.add_dependency(%q<net-http-persistent>, ["~> 1.4.1"])
|
71
|
-
s.add_dependency(%q<multipart-post>, ["~> 1.0.1"])
|
72
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
73
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
74
|
-
s.add_dependency(%q<minitest>, ["~> 2.0.0"])
|
75
|
-
s.add_dependency(%q<webmock>, ["= 1.6.1"])
|
76
|
-
end
|
26
|
+
s.add_development_dependency "rake"
|
27
|
+
s.add_development_dependency "webmock"
|
28
|
+
s.add_development_dependency "minitest"
|
77
29
|
end
|
78
|
-
|
data/lib/hugs/client.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
|
1
|
+
require "hugs/errors"
|
2
|
+
|
3
|
+
require "net/http/persistent"
|
4
|
+
require "net/http/post/multipart"
|
5
|
+
require "nokogiri"
|
6
|
+
require "yajl"
|
2
7
|
|
3
8
|
module Hugs
|
4
9
|
class Client
|
5
10
|
attr_accessor :headers
|
6
|
-
attr_accessor :raise_4xx, :raise_5xx
|
7
|
-
attr_writer :raise_4xx, :raise_5xx
|
11
|
+
attr_accessor :raise_4xx, :raise_5xx, :debug
|
12
|
+
attr_writer :raise_4xx, :raise_5xx, :debug
|
8
13
|
|
9
14
|
Headers = {
|
10
15
|
:json => "application/json",
|
@@ -79,6 +84,7 @@ module Hugs
|
|
79
84
|
upload = params[:upload] && params.delete(:upload)
|
80
85
|
|
81
86
|
@http ||= Net::HTTP::Persistent.new
|
87
|
+
@http.debug_output = $stdout if debug
|
82
88
|
@url ||= URI.parse "#{@scheme}://#{@host}:#{@port}"
|
83
89
|
|
84
90
|
full_path = path_with_query path, query
|
data/lib/hugs/version.rb
ADDED
@@ -1,232 +1,254 @@
|
|
1
|
-
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
require "base64"
|
2
4
|
|
3
5
|
describe Hugs::Client do
|
4
6
|
before do
|
5
7
|
@instance = Hugs::Client.new valid_options
|
8
|
+
@request = Net::HTTP::Get
|
6
9
|
|
7
10
|
WebMock.reset!
|
8
11
|
end
|
9
12
|
|
10
|
-
describe "
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "path" do
|
16
|
-
it "is valid" do
|
17
|
-
stub_request :get, url
|
13
|
+
describe "path" do
|
14
|
+
it "is valid" do
|
15
|
+
stub_request :get, url
|
18
16
|
|
19
|
-
|
17
|
+
@instance.send :response_for, @request, "/", {}
|
20
18
|
|
21
|
-
|
22
|
-
|
19
|
+
assert_requested :get, url
|
20
|
+
end
|
23
21
|
|
24
|
-
|
25
|
-
|
22
|
+
it "is valid when an invalid :query is supplied" do
|
23
|
+
stub_request :get, url
|
26
24
|
|
27
|
-
|
25
|
+
@instance.send :response_for, @request, "/", :query => nil
|
28
26
|
|
29
|
-
|
30
|
-
|
27
|
+
assert_requested :get, url
|
28
|
+
end
|
31
29
|
|
32
|
-
|
33
|
-
|
30
|
+
it "also has a query string" do
|
31
|
+
stub_request(:get, url).with:query => {"foo" => "bar"}
|
34
32
|
|
35
|
-
|
33
|
+
@instance.send :response_for, @request, "/", :query => "foo=bar"
|
36
34
|
|
37
|
-
|
38
|
-
end
|
35
|
+
assert_requested :get, url, :query => {"foo" => "bar"}
|
39
36
|
end
|
37
|
+
end
|
40
38
|
|
41
|
-
|
42
|
-
|
39
|
+
describe "multi-part" do
|
40
|
+
Content_Type_Matcher = %r{multipart/form-data}
|
43
41
|
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
before do
|
43
|
+
@request = Net::HTTP::Post
|
44
|
+
end
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
}
|
46
|
+
it "uploads a file" do
|
47
|
+
stub_request :post, url
|
48
|
+
upload = {
|
49
|
+
:upload => {
|
50
|
+
:parts => { :file => "/dev/null" },
|
51
|
+
:content_type => "type/subtype"
|
55
52
|
}
|
53
|
+
}
|
56
54
|
|
57
|
-
|
55
|
+
@instance.send :response_for, @request, "/", upload
|
58
56
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
57
|
+
assert_requested :post, url, :body => %r{Content-Type: type/subtype}, :headers => {
|
58
|
+
"Content-Type" => Content_Type_Matcher
|
59
|
+
}
|
60
|
+
end
|
63
61
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
}
|
62
|
+
it "has parts" do
|
63
|
+
stub_request :post, url
|
64
|
+
upload = {
|
65
|
+
:upload => {
|
66
|
+
:parts => { :foo => :bar, :baz => :xyzzy },
|
67
|
+
:content_type => "foo/bar"
|
71
68
|
}
|
69
|
+
}
|
72
70
|
|
73
|
-
|
71
|
+
@instance.send :response_for, @request, "/", upload
|
74
72
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
73
|
+
### wtf can't use mx together.
|
74
|
+
content_disposition_matcher = %r{^Content-Disposition: form-data; name="foo".*^bar.*^Content-Disposition: form-data; name="baz".*^xyzzy.*}m
|
75
|
+
assert_requested :post, url, :body => content_disposition_matcher, :headers => {
|
76
|
+
"Content-Type" => Content_Type_Matcher
|
77
|
+
}
|
81
78
|
end
|
79
|
+
end
|
82
80
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
81
|
+
describe "body" do
|
82
|
+
describe "parses response" do
|
83
|
+
describe "json" do
|
84
|
+
it "objectifies and returns a hash" do
|
85
|
+
stub_request(:get, url).to_return :body => '{"foo":"bar"}'
|
86
|
+
instance = Hugs::Client.new valid_options(:type => :json)
|
89
87
|
|
90
|
-
|
88
|
+
response = instance.get "/"
|
91
89
|
|
92
|
-
|
93
|
-
end
|
90
|
+
response.body.must_be_kind_of Hash
|
94
91
|
end
|
92
|
+
end
|
95
93
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
94
|
+
describe "xml" do
|
95
|
+
it "parses and returns a Nokogiri object" do
|
96
|
+
stub_request(:get, url).to_return :body => "<STORAGE></STORAGE>"
|
97
|
+
instance = Hugs::Client.new valid_options(:type => :xml)
|
100
98
|
|
101
|
-
|
99
|
+
response = instance.get "/"
|
102
100
|
|
103
|
-
|
104
|
-
end
|
101
|
+
response.body.must_be_kind_of Nokogiri::XML::Document
|
105
102
|
end
|
106
103
|
end
|
104
|
+
end
|
107
105
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
106
|
+
describe "encodes request" do
|
107
|
+
before do
|
108
|
+
stub_request :get, url
|
109
|
+
end
|
112
110
|
|
113
|
-
|
114
|
-
|
111
|
+
it "is not set when :body invalid" do
|
112
|
+
@instance.send :response_for, @request, "/", :body => nil
|
115
113
|
|
116
|
-
|
117
|
-
|
114
|
+
assert_requested :get, url, :body => nil
|
115
|
+
end
|
118
116
|
|
119
|
-
|
120
|
-
|
117
|
+
it "is not set when :body is missing" do
|
118
|
+
@instance.send :response_for, @request, "/", {}
|
121
119
|
|
122
|
-
|
123
|
-
|
120
|
+
assert_requested :get, url, {}
|
121
|
+
end
|
124
122
|
|
125
|
-
|
126
|
-
|
127
|
-
|
123
|
+
describe "json" do
|
124
|
+
it "is valid" do
|
125
|
+
instance = Hugs::Client.new valid_options(:type => :json)
|
128
126
|
|
129
|
-
|
127
|
+
instance.send :response_for, @request, "/", :body => {:foo => :bar}
|
130
128
|
|
131
|
-
|
132
|
-
end
|
129
|
+
assert_requested :get, url, :body => '{"foo":"bar"}'
|
133
130
|
end
|
131
|
+
end
|
134
132
|
|
135
|
-
|
136
|
-
|
137
|
-
|
133
|
+
describe "xml" do
|
134
|
+
it "is valid" do
|
135
|
+
instance = Hugs::Client.new valid_options(:type => :xml)
|
138
136
|
|
139
|
-
|
137
|
+
instance.send :response_for, @request, "/", :body => "foo bar"
|
140
138
|
|
141
|
-
|
142
|
-
end
|
139
|
+
assert_requested :get, url, :body => "foo bar"
|
143
140
|
end
|
144
141
|
end
|
145
142
|
end
|
143
|
+
end
|
146
144
|
|
145
|
+
describe "headers" do
|
146
|
+
describe "authentication" do
|
147
|
+
it "uses basic auth when providing user and password" do
|
148
|
+
stub_request :get, url("/", "user:credentials")
|
149
|
+
instance = Hugs::Client.new valid_options(:user => "user", :password => "credentials")
|
147
150
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
stub_request :get, url("/", "user:credentials")
|
152
|
-
instance = Hugs::Client.new valid_options(:user => "user", :password => "credentials")
|
153
|
-
|
154
|
-
instance.send :response_for, @request, "/", {}
|
155
|
-
assert_requested :get, url("/", "user:credentials")
|
156
|
-
end
|
151
|
+
instance.send :response_for, @request, "/", {}
|
152
|
+
assert_requested :get, url("/", "user:credentials")
|
153
|
+
end
|
157
154
|
|
158
|
-
|
159
|
-
|
160
|
-
|
155
|
+
it "doesn't use basic auth without a user" do
|
156
|
+
assert_doesnt_use_basic_auth_without :user
|
157
|
+
end
|
161
158
|
|
162
|
-
|
163
|
-
|
164
|
-
end
|
159
|
+
it "doesn't use basic auth without a password" do
|
160
|
+
assert_doesnt_use_basic_auth_without :password
|
165
161
|
end
|
162
|
+
end
|
166
163
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
164
|
+
describe "JSON" do
|
165
|
+
it "supports json GET" do
|
166
|
+
assert_supports_http_verb :json, :get
|
167
|
+
end
|
171
168
|
|
172
|
-
|
173
|
-
|
174
|
-
|
169
|
+
it "supports json DELETE" do
|
170
|
+
assert_supports_http_verb :json, :delete
|
171
|
+
end
|
175
172
|
|
176
|
-
|
177
|
-
|
178
|
-
|
173
|
+
it "supports json POST" do
|
174
|
+
assert_supports_http_verb :json, :post
|
175
|
+
end
|
179
176
|
|
180
|
-
|
181
|
-
|
182
|
-
end
|
177
|
+
it "supports json PUT" do
|
178
|
+
assert_supports_http_verb :json, :put
|
183
179
|
end
|
180
|
+
end
|
184
181
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
182
|
+
describe "XML" do
|
183
|
+
it "supports xml GET" do
|
184
|
+
assert_supports_http_verb :xml, :get
|
185
|
+
end
|
189
186
|
|
190
|
-
|
191
|
-
|
192
|
-
|
187
|
+
it "supports xml DELETE" do
|
188
|
+
assert_supports_http_verb :xml, :delete
|
189
|
+
end
|
193
190
|
|
194
|
-
|
195
|
-
|
196
|
-
|
191
|
+
it "supports xml POST" do
|
192
|
+
assert_supports_http_verb :xml, :post
|
193
|
+
end
|
197
194
|
|
198
|
-
|
199
|
-
|
200
|
-
end
|
195
|
+
it "supports xml PUT" do
|
196
|
+
assert_supports_http_verb :xml, :put
|
201
197
|
end
|
202
198
|
end
|
199
|
+
end
|
203
200
|
|
204
|
-
|
205
|
-
|
206
|
-
|
201
|
+
describe "debug_output" do
|
202
|
+
before do
|
203
|
+
@instance = Hugs::Client.new valid_options(
|
204
|
+
:host => "gist.github.com",
|
205
|
+
:port => "80"
|
206
|
+
)
|
207
207
|
|
208
|
-
|
208
|
+
WebMock.allow_net_connect!
|
209
|
+
end
|
209
210
|
|
210
|
-
|
211
|
+
it "outputs net/http debug data" do
|
212
|
+
@instance.debug = true
|
211
213
|
|
212
|
-
|
213
|
-
instance = Hugs::Client.new valid_options(:type => type)
|
214
|
+
out, err = capture_io { @instance.send :response_for, Net::HTTP::Get, "/api/v1/json/374130", {} }
|
214
215
|
|
215
|
-
|
216
|
+
out.wont_be_empty
|
217
|
+
end
|
216
218
|
|
217
|
-
|
218
|
-
|
219
|
+
it "does not output net/http debug data" do
|
220
|
+
out, err = capture_io { @instance.send :response_for, Net::HTTP::Get, "/api/v1/json/374130", {} }
|
219
221
|
|
220
|
-
|
222
|
+
out.must_be_empty
|
221
223
|
end
|
224
|
+
end
|
222
225
|
|
223
|
-
def assert_doesnt_use_basic_auth_without option
|
224
|
-
stub_request :get, url
|
225
|
-
instance = Hugs::Client.new valid_options(option => "value")
|
226
226
|
|
227
|
-
|
227
|
+
def assert_supports_http_verb type, verb
|
228
|
+
mimetype = {:xml => 'application/xml',
|
229
|
+
:json => 'application/json'}[type]
|
228
230
|
|
229
|
-
|
230
|
-
|
231
|
+
assert mimetype, "Unsupported Mimetype '#{type}'"
|
232
|
+
|
233
|
+
clazz = Net::HTTP.const_get verb.capitalize
|
234
|
+
|
235
|
+
stub_request verb, url
|
236
|
+
instance = Hugs::Client.new valid_options(:type => type)
|
237
|
+
|
238
|
+
instance.send :response_for, clazz, "/", {}
|
239
|
+
|
240
|
+
headers = { "Accept" => ["*/*", mimetype] }
|
241
|
+
headers["Content-Type"] = mimetype if [:put, :put].include? type
|
242
|
+
|
243
|
+
assert_requested verb, url, :headers => headers
|
244
|
+
end
|
245
|
+
|
246
|
+
def assert_doesnt_use_basic_auth_without option
|
247
|
+
stub_request :get, url
|
248
|
+
instance = Hugs::Client.new valid_options(option => "value")
|
249
|
+
|
250
|
+
instance.send :response_for, @request, "/", {}
|
251
|
+
|
252
|
+
assert_requested :get, url
|
231
253
|
end
|
232
254
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
-
require "bundler"
|
2
1
|
Bundler.setup :default, :test
|
3
2
|
|
4
|
-
|
3
|
+
require "hugs"
|
4
|
+
|
5
|
+
require "minitest/spec"
|
6
|
+
require "uri"
|
7
|
+
require "webmock"
|
5
8
|
|
6
9
|
class MiniTest::Unit::TestCase
|
7
10
|
include WebMock::API
|
@@ -10,12 +13,12 @@ class MiniTest::Unit::TestCase
|
|
10
13
|
{
|
11
14
|
:host => "example.com",
|
12
15
|
:port => 80,
|
13
|
-
:scheme => "
|
16
|
+
:scheme => "http"
|
14
17
|
}.merge opts
|
15
18
|
end
|
16
19
|
|
17
20
|
def url path = "/", credentials = nil
|
18
|
-
URI::
|
21
|
+
URI::HTTP.build(
|
19
22
|
valid_options(
|
20
23
|
:path => path,
|
21
24
|
:userinfo => credentials
|
metadata
CHANGED
@@ -1,161 +1,117 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hugs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
version: 2.3.0
|
4
|
+
prerelease:
|
5
|
+
version: 2.4.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
|
-
-
|
8
|
+
- John Dewey
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
13
|
+
date: 2011-02-20 00:00:00 -08:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
21
17
|
name: yajl-ruby
|
18
|
+
prerelease: false
|
22
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
20
|
none: false
|
24
21
|
requirements:
|
25
22
|
- - ~>
|
26
23
|
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
- 7
|
30
|
-
- 8
|
31
|
-
version: 0.7.8
|
24
|
+
version: 0.7.9
|
32
25
|
type: :runtime
|
33
|
-
prerelease: false
|
34
26
|
version_requirements: *id001
|
35
27
|
- !ruby/object:Gem::Dependency
|
36
28
|
name: nokogiri
|
29
|
+
prerelease: false
|
37
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
31
|
none: false
|
39
32
|
requirements:
|
40
33
|
- - ~>
|
41
34
|
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 1
|
44
|
-
- 4
|
45
|
-
- 4
|
46
35
|
version: 1.4.4
|
47
36
|
type: :runtime
|
48
|
-
prerelease: false
|
49
37
|
version_requirements: *id002
|
50
38
|
- !ruby/object:Gem::Dependency
|
51
39
|
name: net-http-persistent
|
40
|
+
prerelease: false
|
52
41
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
42
|
none: false
|
54
43
|
requirements:
|
55
44
|
- - ~>
|
56
45
|
- !ruby/object:Gem::Version
|
57
|
-
segments:
|
58
|
-
- 1
|
59
|
-
- 4
|
60
|
-
- 1
|
61
46
|
version: 1.4.1
|
62
47
|
type: :runtime
|
63
|
-
prerelease: false
|
64
48
|
version_requirements: *id003
|
65
49
|
- !ruby/object:Gem::Dependency
|
66
50
|
name: multipart-post
|
51
|
+
prerelease: false
|
67
52
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
53
|
none: false
|
69
54
|
requirements:
|
70
55
|
- - ~>
|
71
56
|
- !ruby/object:Gem::Version
|
72
|
-
segments:
|
73
|
-
- 1
|
74
|
-
- 0
|
75
|
-
- 1
|
76
57
|
version: 1.0.1
|
77
58
|
type: :runtime
|
78
|
-
prerelease: false
|
79
59
|
version_requirements: *id004
|
80
60
|
- !ruby/object:Gem::Dependency
|
81
61
|
name: rake
|
62
|
+
prerelease: false
|
82
63
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
64
|
none: false
|
84
65
|
requirements:
|
85
66
|
- - ">="
|
86
67
|
- !ruby/object:Gem::Version
|
87
|
-
segments:
|
88
|
-
- 0
|
89
68
|
version: "0"
|
90
69
|
type: :development
|
91
|
-
prerelease: false
|
92
70
|
version_requirements: *id005
|
93
71
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
72
|
+
name: webmock
|
73
|
+
prerelease: false
|
95
74
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
75
|
none: false
|
97
76
|
requirements:
|
98
|
-
- -
|
77
|
+
- - ">="
|
99
78
|
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
- 1
|
102
|
-
- 5
|
103
|
-
- 1
|
104
|
-
version: 1.5.1
|
79
|
+
version: "0"
|
105
80
|
type: :development
|
106
|
-
prerelease: false
|
107
81
|
version_requirements: *id006
|
108
82
|
- !ruby/object:Gem::Dependency
|
109
83
|
name: minitest
|
84
|
+
prerelease: false
|
110
85
|
requirement: &id007 !ruby/object:Gem::Requirement
|
111
86
|
none: false
|
112
87
|
requirements:
|
113
|
-
- -
|
88
|
+
- - ">="
|
114
89
|
- !ruby/object:Gem::Version
|
115
|
-
|
116
|
-
- 2
|
117
|
-
- 0
|
118
|
-
- 0
|
119
|
-
version: 2.0.0
|
90
|
+
version: "0"
|
120
91
|
type: :development
|
121
|
-
prerelease: false
|
122
92
|
version_requirements: *id007
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
|
-
name: webmock
|
125
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
|
-
requirements:
|
128
|
-
- - "="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
segments:
|
131
|
-
- 1
|
132
|
-
- 6
|
133
|
-
- 1
|
134
|
-
version: 1.6.1
|
135
|
-
type: :development
|
136
|
-
prerelease: false
|
137
|
-
version_requirements: *id008
|
138
93
|
description:
|
139
|
-
email:
|
94
|
+
email:
|
95
|
+
- john@dewey.ws
|
140
96
|
executables: []
|
141
97
|
|
142
98
|
extensions: []
|
143
99
|
|
144
|
-
extra_rdoc_files:
|
145
|
-
|
146
|
-
- README.md
|
100
|
+
extra_rdoc_files: []
|
101
|
+
|
147
102
|
files:
|
103
|
+
- .gitignore
|
148
104
|
- .rvmrc
|
149
105
|
- Gemfile
|
150
106
|
- Gemfile.lock
|
151
107
|
- LICENSE
|
152
108
|
- README.md
|
153
109
|
- Rakefile
|
154
|
-
- VERSION
|
155
110
|
- hugs.gemspec
|
156
111
|
- lib/hugs.rb
|
157
112
|
- lib/hugs/client.rb
|
158
113
|
- lib/hugs/errors.rb
|
114
|
+
- lib/hugs/version.rb
|
159
115
|
- test/lib/hugs/client_test.rb
|
160
116
|
- test/lib/hugs/errors_test.rb
|
161
117
|
- test/test_helper.rb
|
@@ -173,21 +129,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
129
|
requirements:
|
174
130
|
- - ">="
|
175
131
|
- !ruby/object:Gem::Version
|
176
|
-
segments:
|
177
|
-
- 0
|
178
132
|
version: "0"
|
179
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
134
|
none: false
|
181
135
|
requirements:
|
182
136
|
- - ">="
|
183
137
|
- !ruby/object:Gem::Version
|
184
|
-
segments:
|
185
|
-
- 0
|
186
138
|
version: "0"
|
187
139
|
requirements: []
|
188
140
|
|
189
|
-
rubyforge_project:
|
190
|
-
rubygems_version: 1.
|
141
|
+
rubyforge_project: hugs
|
142
|
+
rubygems_version: 1.5.0
|
191
143
|
signing_key:
|
192
144
|
specification_version: 3
|
193
145
|
summary: Hugs net-http-persistent with convenient get, delete, post, and put methods.
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.3.0
|