rest-client-maestro 1.7.2.maestro

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.
Files changed (46) hide show
  1. data/.gitignore +8 -0
  2. data/.rspec +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +8 -0
  5. data/AUTHORS +69 -0
  6. data/Gemfile +7 -0
  7. data/README.rdoc +322 -0
  8. data/Rakefile +49 -0
  9. data/bin/restclient +93 -0
  10. data/history.md +134 -0
  11. data/lib/rest-client.rb +2 -0
  12. data/lib/rest_client.rb +2 -0
  13. data/lib/restclient/abstract_response.rb +106 -0
  14. data/lib/restclient/exceptions.rb +198 -0
  15. data/lib/restclient/net_http_ext.rb +55 -0
  16. data/lib/restclient/payload.rb +242 -0
  17. data/lib/restclient/raw_response.rb +34 -0
  18. data/lib/restclient/request.rb +346 -0
  19. data/lib/restclient/resource.rb +169 -0
  20. data/lib/restclient/response.rb +26 -0
  21. data/lib/restclient.rb +174 -0
  22. data/rest-client-maestro.gemspec +23 -0
  23. data/spec/integration/capath_equifax/578d5c04.0 +19 -0
  24. data/spec/integration/capath_equifax/594f1775.0 +19 -0
  25. data/spec/integration/capath_equifax/README +8 -0
  26. data/spec/integration/capath_equifax/equifax.crt +19 -0
  27. data/spec/integration/capath_verisign/415660c1.0 +14 -0
  28. data/spec/integration/capath_verisign/7651b327.0 +14 -0
  29. data/spec/integration/capath_verisign/README +8 -0
  30. data/spec/integration/capath_verisign/verisign.crt +14 -0
  31. data/spec/integration/certs/equifax.crt +19 -0
  32. data/spec/integration/certs/verisign.crt +14 -0
  33. data/spec/integration/integration_spec.rb +35 -0
  34. data/spec/integration/request_spec.rb +63 -0
  35. data/spec/spec_helper.rb +12 -0
  36. data/spec/unit/abstract_response_spec.rb +85 -0
  37. data/spec/unit/exceptions_spec.rb +95 -0
  38. data/spec/unit/master_shake.jpg +0 -0
  39. data/spec/unit/payload_spec.rb +245 -0
  40. data/spec/unit/raw_response_spec.rb +17 -0
  41. data/spec/unit/request2_spec.rb +32 -0
  42. data/spec/unit/request_spec.rb +621 -0
  43. data/spec/unit/resource_spec.rb +133 -0
  44. data/spec/unit/response_spec.rb +166 -0
  45. data/spec/unit/restclient_spec.rb +73 -0
  46. metadata +220 -0
@@ -0,0 +1,133 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestClient::Resource do
4
+ before do
5
+ @resource = RestClient::Resource.new('http://some/resource', :user => 'jane', :password => 'mypass', :headers => {'X-Something' => '1'})
6
+ end
7
+
8
+ context "Resource delegation" do
9
+ it "GET" do
10
+ RestClient::Request.should_receive(:execute).with(:method => :get, :url => 'http://some/resource', :headers => {'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
11
+ @resource.get
12
+ end
13
+
14
+ it "HEAD" do
15
+ RestClient::Request.should_receive(:execute).with(:method => :head, :url => 'http://some/resource', :headers => {'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
16
+ @resource.head
17
+ end
18
+
19
+ it "POST" do
20
+ RestClient::Request.should_receive(:execute).with(:method => :post, :url => 'http://some/resource', :payload => 'abc', :headers => {:content_type => 'image/jpg', 'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
21
+ @resource.post 'abc', :content_type => 'image/jpg'
22
+ end
23
+
24
+ it "PUT" do
25
+ RestClient::Request.should_receive(:execute).with(:method => :put, :url => 'http://some/resource', :payload => 'abc', :headers => {:content_type => 'image/jpg', 'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
26
+ @resource.put 'abc', :content_type => 'image/jpg'
27
+ end
28
+
29
+ it "PATCH" do
30
+ RestClient::Request.should_receive(:execute).with(:method => :patch, :url => 'http://some/resource', :payload => 'abc', :headers => {:content_type => 'image/jpg', 'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
31
+ @resource.patch 'abc', :content_type => 'image/jpg'
32
+ end
33
+
34
+ it "DELETE" do
35
+ RestClient::Request.should_receive(:execute).with(:method => :delete, :url => 'http://some/resource', :headers => {'X-Something' => '1'}, :user => 'jane', :password => 'mypass')
36
+ @resource.delete
37
+ end
38
+
39
+ it "overrides resource headers" do
40
+ RestClient::Request.should_receive(:execute).with(:method => :get, :url => 'http://some/resource', :headers => {'X-Something' => '2'}, :user => 'jane', :password => 'mypass')
41
+ @resource.get 'X-Something' => '2'
42
+ end
43
+ end
44
+
45
+ it "can instantiate with no user/password" do
46
+ @resource = RestClient::Resource.new('http://some/resource')
47
+ end
48
+
49
+ it "is backwards compatible with previous constructor" do
50
+ @resource = RestClient::Resource.new('http://some/resource', 'user', 'pass')
51
+ @resource.user.should eq 'user'
52
+ @resource.password.should eq 'pass'
53
+ end
54
+
55
+ it "concatenates urls, inserting a slash when it needs one" do
56
+ @resource.concat_urls('http://example.com', 'resource').should eq 'http://example.com/resource'
57
+ end
58
+
59
+ it "concatenates urls, using no slash if the first url ends with a slash" do
60
+ @resource.concat_urls('http://example.com/', 'resource').should eq 'http://example.com/resource'
61
+ end
62
+
63
+ it "concatenates urls, using no slash if the second url starts with a slash" do
64
+ @resource.concat_urls('http://example.com', '/resource').should eq 'http://example.com/resource'
65
+ end
66
+
67
+ it "concatenates even non-string urls, :posts + 1 => 'posts/1'" do
68
+ @resource.concat_urls(:posts, 1).should eq 'posts/1'
69
+ end
70
+
71
+ it "offers subresources via []" do
72
+ parent = RestClient::Resource.new('http://example.com')
73
+ parent['posts'].url.should eq 'http://example.com/posts'
74
+ end
75
+
76
+ it "transports options to subresources" do
77
+ parent = RestClient::Resource.new('http://example.com', :user => 'user', :password => 'password')
78
+ parent['posts'].user.should eq 'user'
79
+ parent['posts'].password.should eq 'password'
80
+ end
81
+
82
+ it "passes a given block to subresources" do
83
+ block = Proc.new{|r| r}
84
+ parent = RestClient::Resource.new('http://example.com', &block)
85
+ parent['posts'].block.should eq block
86
+ end
87
+
88
+ it "the block should be overrideable" do
89
+ block1 = Proc.new{|r| r}
90
+ block2 = Proc.new{|r| r}
91
+ parent = RestClient::Resource.new('http://example.com', &block1)
92
+ # parent['posts', &block2].block.should eq block2 # ruby 1.9 syntax
93
+ parent.send(:[], 'posts', &block2).block.should eq block2
94
+ end
95
+
96
+ it "the block should be overrideable in ruby 1.9 syntax" do
97
+ block = Proc.new{|r| r}
98
+ parent = RestClient::Resource.new('http://example.com', &block)
99
+ r19_syntax = %q{
100
+ parent['posts', &->(r){r}].block.should_not eq block
101
+ }
102
+ if is_ruby_19?
103
+ eval(r19_syntax)
104
+ else
105
+ parent.should_not be_nil
106
+ end
107
+ end
108
+
109
+ it "prints its url with to_s" do
110
+ RestClient::Resource.new('x').to_s.should eq 'x'
111
+ end
112
+
113
+ describe 'block' do
114
+ it 'can use block when creating the resource' do
115
+ stub_request(:get, 'www.example.com').to_return(:body => '', :status => 404)
116
+ resource = RestClient::Resource.new('www.example.com') { |response, request| 'foo' }
117
+ resource.get.should eq 'foo'
118
+ end
119
+
120
+ it 'can use block when executing the resource' do
121
+ stub_request(:get, 'www.example.com').to_return(:body => '', :status => 404)
122
+ resource = RestClient::Resource.new('www.example.com')
123
+ resource.get { |response, request| 'foo' }.should eq 'foo'
124
+ end
125
+
126
+ it 'execution block override resource block' do
127
+ stub_request(:get, 'www.example.com').to_return(:body => '', :status => 404)
128
+ resource = RestClient::Resource.new('www.example.com') { |response, request| 'foo' }
129
+ resource.get { |response, request| 'bar' }.should eq 'bar'
130
+ end
131
+
132
+ end
133
+ end
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestClient::Response do
4
+ before do
5
+ @net_http_res = double('net http response', :to_hash => {"Status" => ["200 OK"]}, :code => 200)
6
+ @request = double('http request', :user => nil, :password => nil)
7
+ @response = RestClient::Response.create('abc', @net_http_res, {})
8
+ end
9
+
10
+ it "behaves like string" do
11
+ @response.to_s.should eq 'abc'
12
+ @response.to_str.should eq 'abc'
13
+ @response.to_i.should eq 200
14
+ end
15
+
16
+ it "accepts nil strings and sets it to empty for the case of HEAD" do
17
+ RestClient::Response.create(nil, @net_http_res, {}).to_s.should eq ""
18
+ end
19
+
20
+ it "test headers and raw headers" do
21
+ @response.raw_headers["Status"][0].should eq "200 OK"
22
+ @response.headers[:status].should eq "200 OK"
23
+ end
24
+
25
+ describe "cookie processing" do
26
+ it "should correctly deal with one Set-Cookie header with one cookie inside" do
27
+ net_http_res = double('net http response', :to_hash => {"etag" => ["\"e1ac1a2df945942ef4cac8116366baad\""], "set-cookie" => ["main_page=main_page_no_rewrite; path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT"]})
28
+ response = RestClient::Response.create('abc', net_http_res, {})
29
+ response.headers[:set_cookie].should eq ["main_page=main_page_no_rewrite; path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT"]
30
+ response.cookies.should eq({ "main_page" => "main_page_no_rewrite" })
31
+ end
32
+
33
+ it "should correctly deal with multiple cookies [multiple Set-Cookie headers]" do
34
+ net_http_res = double('net http response', :to_hash => {"etag" => ["\"e1ac1a2df945942ef4cac8116366baad\""], "set-cookie" => ["main_page=main_page_no_rewrite; path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT", "remember_me=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT", "user=somebody; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"]})
35
+ response = RestClient::Response.create('abc', net_http_res, {})
36
+ response.headers[:set_cookie].should eq ["main_page=main_page_no_rewrite; path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT", "remember_me=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT", "user=somebody; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"]
37
+ response.cookies.should eq({
38
+ "main_page" => "main_page_no_rewrite",
39
+ "remember_me" => "",
40
+ "user" => "somebody"
41
+ })
42
+ end
43
+
44
+ it "should correctly deal with multiple cookies [one Set-Cookie header with multiple cookies]" do
45
+ net_http_res = double('net http response', :to_hash => {"etag" => ["\"e1ac1a2df945942ef4cac8116366baad\""], "set-cookie" => ["main_page=main_page_no_rewrite; path=/; expires=Tue, 20-Jan-2015 15:03:14 GMT, remember_me=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT, user=somebody; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"]})
46
+ response = RestClient::Response.create('abc', net_http_res, {})
47
+ response.cookies.should eq({
48
+ "main_page" => "main_page_no_rewrite",
49
+ "remember_me" => "",
50
+ "user" => "somebody"
51
+ })
52
+ end
53
+ end
54
+
55
+ describe "exceptions processing" do
56
+ it "should return itself for normal codes" do
57
+ (200..206).each do |code|
58
+ net_http_res = double('net http response', :code => '200')
59
+ response = RestClient::Response.create('abc', net_http_res, {})
60
+ response.return! @request
61
+ end
62
+ end
63
+
64
+ it "should throw an exception for other codes" do
65
+ RestClient::Exceptions::EXCEPTIONS_MAP.each_key do |code|
66
+ unless (200..207).include? code
67
+ net_http_res = double('net http response', :code => code.to_i)
68
+ response = RestClient::Response.create('abc', net_http_res, {})
69
+ lambda { response.return!}.should raise_error
70
+ end
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ describe "redirection" do
77
+
78
+ it "follows a redirection when the request is a get" do
79
+ stub_request(:get, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://new/resource'})
80
+ stub_request(:get, 'http://new/resource').to_return(:body => 'Foo')
81
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get).body.should eq 'Foo'
82
+ end
83
+
84
+ it "follows a redirection and keep the parameters" do
85
+ stub_request(:get, 'http://foo:bar@some/resource').with(:headers => {'Accept' => 'application/json'}).to_return(:body => '', :status => 301, :headers => {'Location' => 'http://new/resource'})
86
+ stub_request(:get, 'http://foo:bar@new/resource').with(:headers => {'Accept' => 'application/json'}).to_return(:body => 'Foo')
87
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get, :user => 'foo', :password => 'bar', :headers => {:accept => :json}).body.should eq 'Foo'
88
+ end
89
+
90
+ it "follows a redirection and keep the cookies" do
91
+ stub_request(:get, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Set-Cookie' => 'Foo=Bar', 'Location' => 'http://new/resource', })
92
+ stub_request(:get, 'http://new/resource').with(:headers => {'Cookie' => 'Foo=Bar'}).to_return(:body => 'Qux')
93
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get).body.should eq 'Qux'
94
+ end
95
+
96
+ it "doesn't follow a 301 when the request is a post" do
97
+ net_http_res = double('net http response', :code => 301)
98
+ response = RestClient::Response.create('abc', net_http_res, {:method => :post})
99
+ lambda { response.return!(@request)}.should raise_error(RestClient::MovedPermanently)
100
+ end
101
+
102
+ it "doesn't follow a 302 when the request is a post" do
103
+ net_http_res = double('net http response', :code => 302)
104
+ response = RestClient::Response.create('abc', net_http_res, {:method => :post})
105
+ lambda { response.return!(@request)}.should raise_error(RestClient::Found)
106
+ end
107
+
108
+ it "doesn't follow a 307 when the request is a post" do
109
+ net_http_res = double('net http response', :code => 307)
110
+ response = RestClient::Response.create('abc', net_http_res, {:method => :post})
111
+ lambda { response.return!(@request)}.should raise_error(RestClient::TemporaryRedirect)
112
+ end
113
+
114
+ it "doesn't follow a redirection when the request is a put" do
115
+ net_http_res = double('net http response', :code => 301)
116
+ response = RestClient::Response.create('abc', net_http_res, {:method => :put})
117
+ lambda { response.return!(@request)}.should raise_error(RestClient::MovedPermanently)
118
+ end
119
+
120
+ it "follows a redirection when the request is a post and result is a 303" do
121
+ stub_request(:put, 'http://some/resource').to_return(:body => '', :status => 303, :headers => {'Location' => 'http://new/resource'})
122
+ stub_request(:get, 'http://new/resource').to_return(:body => 'Foo')
123
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :put).body.should eq 'Foo'
124
+ end
125
+
126
+ it "follows a redirection when the request is a head" do
127
+ stub_request(:head, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://new/resource'})
128
+ stub_request(:head, 'http://new/resource').to_return(:body => 'Foo')
129
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :head).body.should eq 'Foo'
130
+ end
131
+
132
+ it "handles redirects with relative paths" do
133
+ stub_request(:get, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Location' => 'index'})
134
+ stub_request(:get, 'http://some/index').to_return(:body => 'Foo')
135
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get).body.should eq 'Foo'
136
+ end
137
+
138
+ it "handles redirects with relative path and query string" do
139
+ stub_request(:get, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Location' => 'index?q=1'})
140
+ stub_request(:get, 'http://some/index?q=1').to_return(:body => 'Foo')
141
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get).body.should eq 'Foo'
142
+ end
143
+
144
+ it "follow a redirection when the request is a get and the response is in the 30x range" do
145
+ stub_request(:get, 'http://some/resource').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://new/resource'})
146
+ stub_request(:get, 'http://new/resource').to_return(:body => 'Foo')
147
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get).body.should eq 'Foo'
148
+ end
149
+
150
+ it "follows no more than 10 redirections before raising error" do
151
+ stub_request(:get, 'http://some/redirect-1').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://some/redirect-2'})
152
+ stub_request(:get, 'http://some/redirect-2').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://some/redirect-2'})
153
+ lambda { RestClient::Request.execute(:url => 'http://some/redirect-1', :method => :get) }.should raise_error(RestClient::MaxRedirectsReached)
154
+ WebMock.should have_requested(:get, 'http://some/redirect-2').times(10)
155
+ end
156
+
157
+ it "follows no more than max_redirects redirections, if specified" do
158
+ stub_request(:get, 'http://some/redirect-1').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://some/redirect-2'})
159
+ stub_request(:get, 'http://some/redirect-2').to_return(:body => '', :status => 301, :headers => {'Location' => 'http://some/redirect-2'})
160
+ lambda { RestClient::Request.execute(:url => 'http://some/redirect-1', :method => :get, :max_redirects => 5) }.should raise_error(RestClient::MaxRedirectsReached)
161
+ WebMock.should have_requested(:get, 'http://some/redirect-2').times(5)
162
+ end
163
+ end
164
+
165
+
166
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ describe RestClient do
4
+ describe "API" do
5
+ it "GET" do
6
+ RestClient::Request.should_receive(:execute).with(:method => :get, :url => 'http://some/resource', :headers => {})
7
+ RestClient.get('http://some/resource')
8
+ end
9
+
10
+ it "POST" do
11
+ RestClient::Request.should_receive(:execute).with(:method => :post, :url => 'http://some/resource', :payload => 'payload', :headers => {})
12
+ RestClient.post('http://some/resource', 'payload')
13
+ end
14
+
15
+ it "PUT" do
16
+ RestClient::Request.should_receive(:execute).with(:method => :put, :url => 'http://some/resource', :payload => 'payload', :headers => {})
17
+ RestClient.put('http://some/resource', 'payload')
18
+ end
19
+
20
+ it "PATCH" do
21
+ RestClient::Request.should_receive(:execute).with(:method => :patch, :url => 'http://some/resource', :payload => 'payload', :headers => {})
22
+ RestClient.patch('http://some/resource', 'payload')
23
+ end
24
+
25
+ it "DELETE" do
26
+ RestClient::Request.should_receive(:execute).with(:method => :delete, :url => 'http://some/resource', :headers => {})
27
+ RestClient.delete('http://some/resource')
28
+ end
29
+
30
+ it "HEAD" do
31
+ RestClient::Request.should_receive(:execute).with(:method => :head, :url => 'http://some/resource', :headers => {})
32
+ RestClient.head('http://some/resource')
33
+ end
34
+
35
+ it "OPTIONS" do
36
+ RestClient::Request.should_receive(:execute).with(:method => :options, :url => 'http://some/resource', :headers => {})
37
+ RestClient.options('http://some/resource')
38
+ end
39
+ end
40
+
41
+ describe "logging" do
42
+ after do
43
+ RestClient.log = nil
44
+ end
45
+
46
+ it "uses << if the log is not a string" do
47
+ log = RestClient.log = []
48
+ log.should_receive(:<<).with('xyz')
49
+ RestClient.log << 'xyz'
50
+ end
51
+
52
+ it "displays the log to stdout" do
53
+ RestClient.log = 'stdout'
54
+ STDOUT.should_receive(:puts).with('xyz')
55
+ RestClient.log << 'xyz'
56
+ end
57
+
58
+ it "displays the log to stderr" do
59
+ RestClient.log = 'stderr'
60
+ STDERR.should_receive(:puts).with('xyz')
61
+ RestClient.log << 'xyz'
62
+ end
63
+
64
+ it "append the log to the requested filename" do
65
+ RestClient.log = '/tmp/restclient.log'
66
+ f = double('file handle')
67
+ File.should_receive(:open).with('/tmp/restclient.log', 'a').and_yield(f)
68
+ f.should_receive(:puts).with('xyz')
69
+ RestClient.log << 'xyz'
70
+ end
71
+ end
72
+
73
+ end
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rest-client-maestro
3
+ version: !ruby/object:Gem::Version
4
+ hash: 96448493
5
+ prerelease: true
6
+ segments:
7
+ - 1
8
+ - 7
9
+ - 2
10
+ - maestro
11
+ version: 1.7.2.maestro
12
+ platform: ruby
13
+ authors:
14
+ - REST Client Team
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2013-12-03 00:00:00 -08:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: mime-types
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 47
31
+ segments:
32
+ - 1
33
+ - 16
34
+ version: "1.16"
35
+ - - <
36
+ - !ruby/object:Gem::Version
37
+ hash: 3
38
+ segments:
39
+ - 2
40
+ - 0
41
+ version: "2.0"
42
+ type: :runtime
43
+ version_requirements: *id001
44
+ - !ruby/object:Gem::Dependency
45
+ name: webmock
46
+ prerelease: false
47
+ requirement: &id002 !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ hash: 7
53
+ segments:
54
+ - 1
55
+ - 4
56
+ version: "1.4"
57
+ type: :development
58
+ version_requirements: *id002
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ prerelease: false
62
+ requirement: &id003 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ hash: 11
68
+ segments:
69
+ - 2
70
+ - 4
71
+ version: "2.4"
72
+ type: :development
73
+ version_requirements: *id003
74
+ - !ruby/object:Gem::Dependency
75
+ name: netrc
76
+ prerelease: false
77
+ requirement: &id004 !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ hash: 13
83
+ segments:
84
+ - 0
85
+ - 7
86
+ - 7
87
+ version: 0.7.7
88
+ type: :runtime
89
+ version_requirements: *id004
90
+ - !ruby/object:Gem::Dependency
91
+ name: rdoc
92
+ prerelease: false
93
+ requirement: &id005 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 27
99
+ segments:
100
+ - 2
101
+ - 4
102
+ - 2
103
+ version: 2.4.2
104
+ type: :runtime
105
+ version_requirements: *id005
106
+ description: "A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete."
107
+ email: rest.client@librelist.com
108
+ executables:
109
+ - restclient
110
+ extensions: []
111
+
112
+ extra_rdoc_files:
113
+ - README.rdoc
114
+ - history.md
115
+ files:
116
+ - .gitignore
117
+ - .rspec
118
+ - .ruby-version
119
+ - .travis.yml
120
+ - AUTHORS
121
+ - Gemfile
122
+ - README.rdoc
123
+ - Rakefile
124
+ - bin/restclient
125
+ - history.md
126
+ - lib/rest-client.rb
127
+ - lib/rest_client.rb
128
+ - lib/restclient.rb
129
+ - lib/restclient/abstract_response.rb
130
+ - lib/restclient/exceptions.rb
131
+ - lib/restclient/net_http_ext.rb
132
+ - lib/restclient/payload.rb
133
+ - lib/restclient/raw_response.rb
134
+ - lib/restclient/request.rb
135
+ - lib/restclient/resource.rb
136
+ - lib/restclient/response.rb
137
+ - rest-client-maestro.gemspec
138
+ - spec/integration/capath_equifax/578d5c04.0
139
+ - spec/integration/capath_equifax/594f1775.0
140
+ - spec/integration/capath_equifax/README
141
+ - spec/integration/capath_equifax/equifax.crt
142
+ - spec/integration/capath_verisign/415660c1.0
143
+ - spec/integration/capath_verisign/7651b327.0
144
+ - spec/integration/capath_verisign/README
145
+ - spec/integration/capath_verisign/verisign.crt
146
+ - spec/integration/certs/equifax.crt
147
+ - spec/integration/certs/verisign.crt
148
+ - spec/integration/integration_spec.rb
149
+ - spec/integration/request_spec.rb
150
+ - spec/spec_helper.rb
151
+ - spec/unit/abstract_response_spec.rb
152
+ - spec/unit/exceptions_spec.rb
153
+ - spec/unit/master_shake.jpg
154
+ - spec/unit/payload_spec.rb
155
+ - spec/unit/raw_response_spec.rb
156
+ - spec/unit/request2_spec.rb
157
+ - spec/unit/request_spec.rb
158
+ - spec/unit/resource_spec.rb
159
+ - spec/unit/response_spec.rb
160
+ - spec/unit/restclient_spec.rb
161
+ has_rdoc: true
162
+ homepage: http://github.com/maestrodev/rest-client
163
+ licenses:
164
+ - MIT
165
+ post_install_message:
166
+ rdoc_options: []
167
+
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ hash: 3
176
+ segments:
177
+ - 0
178
+ version: "0"
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ">"
183
+ - !ruby/object:Gem::Version
184
+ hash: 25
185
+ segments:
186
+ - 1
187
+ - 3
188
+ - 1
189
+ version: 1.3.1
190
+ requirements: []
191
+
192
+ rubyforge_project:
193
+ rubygems_version: 1.3.7
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions.
197
+ test_files:
198
+ - spec/integration/capath_equifax/578d5c04.0
199
+ - spec/integration/capath_equifax/594f1775.0
200
+ - spec/integration/capath_equifax/README
201
+ - spec/integration/capath_equifax/equifax.crt
202
+ - spec/integration/capath_verisign/415660c1.0
203
+ - spec/integration/capath_verisign/7651b327.0
204
+ - spec/integration/capath_verisign/README
205
+ - spec/integration/capath_verisign/verisign.crt
206
+ - spec/integration/certs/equifax.crt
207
+ - spec/integration/certs/verisign.crt
208
+ - spec/integration/integration_spec.rb
209
+ - spec/integration/request_spec.rb
210
+ - spec/spec_helper.rb
211
+ - spec/unit/abstract_response_spec.rb
212
+ - spec/unit/exceptions_spec.rb
213
+ - spec/unit/master_shake.jpg
214
+ - spec/unit/payload_spec.rb
215
+ - spec/unit/raw_response_spec.rb
216
+ - spec/unit/request2_spec.rb
217
+ - spec/unit/request_spec.rb
218
+ - spec/unit/resource_spec.rb
219
+ - spec/unit/response_spec.rb
220
+ - spec/unit/restclient_spec.rb