api-client 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,12 +18,24 @@ class ApiClient::Base
18
18
  false
19
19
  end
20
20
 
21
- def self.get(url = '')
22
- dispatch { _get(url) }
21
+ def self.get(url = '', header = {})
22
+ dispatch { _get(url, header) }
23
23
  end
24
24
 
25
- def self.post(url = '', args = {})
26
- dispatch { _post(url, args) }
25
+ def self.post(url = '', args = {}, header = {})
26
+ dispatch { _post(url, args, header) }
27
+ end
28
+
29
+ def self.put(url = '', args = {}, header = {})
30
+ dispatch { _put(url, args, header) }
31
+ end
32
+
33
+ def self.patch(url = '', args = {}, header = {})
34
+ dispatch { _patch(url, args, header) }
35
+ end
36
+
37
+ def self.delete(url = '', header = {})
38
+ dispatch { _delete(url, header) }
27
39
  end
28
40
 
29
41
  protected
@@ -1,13 +1,35 @@
1
1
  require "net/http"
2
2
 
3
3
  module ApiClient::Dispatcher
4
- def _get(url = '')
5
- Net::HTTP.get_response(URI.parse(url))
4
+ def _get(url, header)
5
+ initialize_connection(url)
6
+ @http.get(@uri.path, header)
6
7
  end
7
8
 
8
- def _post(url = '', args = {})
9
- uri = URI(url)
10
- http = Net::HTTP.new(uri.host, uri.port)
11
- http.post(uri.path, args.to_json, { 'Content-Type' => 'application/json' })
9
+ def _post(url, args, header)
10
+ initialize_connection(url)
11
+ @http.post(@uri.path, args.to_json, { 'Content-Type' => 'application/json' }.merge(header))
12
+ end
13
+
14
+ def _put(url, args, header)
15
+ initialize_connection(url)
16
+ @http.put(@uri.path, args.to_json, { 'Content-Type' => 'application/json' }.merge(header))
17
+ end
18
+
19
+ def _patch(url, args, header)
20
+ initialize_connection(url)
21
+ @http.patch(@uri.path, args.to_json, { 'Content-Type' => 'application/json' }.merge(header))
22
+ end
23
+
24
+ def _delete(url, header)
25
+ initialize_connection(url)
26
+ @http.delete(@uri.path, header)
27
+ end
28
+
29
+ protected
30
+
31
+ def initialize_connection(url = '')
32
+ @uri = URI(url)
33
+ @http = Net::HTTP.new(@uri.host, @uri.port)
12
34
  end
13
35
  end
@@ -1,3 +1,3 @@
1
1
  module ApiClient
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApiClient::Base do
4
+ let(:user) { User.new(:a => "a", :b => "b") }
5
+
6
+ describe "#delete" do
7
+ context "when connection is refused" do
8
+ before :each do
9
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :exception => Errno::ECONNREFUSED)
10
+ end
11
+
12
+ it "should return a ConnectionRefused exception" do
13
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::ConnectionRefused)
14
+ end
15
+ end
16
+
17
+ context "when response code is 401" do
18
+ before :each do
19
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "401")
20
+ end
21
+
22
+ it "should return a Unauthorized exception" do
23
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::Unauthorized)
24
+ end
25
+ end
26
+
27
+ context "when response code is 403" do
28
+ before :each do
29
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "403")
30
+ end
31
+
32
+ it "should return a Forbidden exception" do
33
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::Forbidden)
34
+ end
35
+ end
36
+
37
+ context "when response code is 404" do
38
+ before :each do
39
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "404")
40
+ end
41
+
42
+ it "should return a NotFound exception" do
43
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::NotFound)
44
+ end
45
+ end
46
+
47
+ context "when response code is 500" do
48
+ before :each do
49
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "500")
50
+ end
51
+
52
+ it "should return a InternalServerError exception" do
53
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::InternalServerError)
54
+ end
55
+ end
56
+
57
+ context "when response code is 502" do
58
+ before :each do
59
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "502")
60
+ end
61
+
62
+ it "should return a BadGateway exception" do
63
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::BadGateway)
64
+ end
65
+ end
66
+
67
+ context "when response code is 503" do
68
+ before :each do
69
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "503")
70
+ end
71
+
72
+ it "should return a ServiceUnavailable exception" do
73
+ lambda { ApiClient::Base.delete('http://api.example.com/user/5') }.should raise_error(ApiClient::Exceptions::ServiceUnavailable)
74
+ end
75
+ end
76
+
77
+ context "when response code is 2xx" do
78
+ before :each do
79
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "201", :body => '{"a": "a", "b": "b"}')
80
+ User.stub(:new).and_return(user)
81
+ end
82
+
83
+ it "should return a object intialized with the response" do
84
+ User.delete('http://api.example.com/user/5').should == user
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApiClient::Base do
4
+ let(:user) { User.new(:a => "a", :b => "b") }
5
+
6
+ describe "#patch" do
7
+ context "when connection is refused" do
8
+ before :each do
9
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :exception => Errno::ECONNREFUSED)
10
+ end
11
+
12
+ it "should return a ConnectionRefused exception" do
13
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::ConnectionRefused)
14
+ end
15
+ end
16
+
17
+ context "when response code is 401" do
18
+ before :each do
19
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "401")
20
+ end
21
+
22
+ it "should return a Unauthorized exception" do
23
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::Unauthorized)
24
+ end
25
+ end
26
+
27
+ context "when response code is 403" do
28
+ before :each do
29
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "403")
30
+ end
31
+
32
+ it "should return a Forbidden exception" do
33
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::Forbidden)
34
+ end
35
+ end
36
+
37
+ context "when response code is 404" do
38
+ before :each do
39
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "404")
40
+ end
41
+
42
+ it "should return a NotFound exception" do
43
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::NotFound)
44
+ end
45
+ end
46
+
47
+ context "when response code is 500" do
48
+ before :each do
49
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "500")
50
+ end
51
+
52
+ it "should return a InternalServerError exception" do
53
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::InternalServerError)
54
+ end
55
+ end
56
+
57
+ context "when response code is 502" do
58
+ before :each do
59
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "502")
60
+ end
61
+
62
+ it "should return a BadGateway exception" do
63
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::BadGateway)
64
+ end
65
+ end
66
+
67
+ context "when response code is 503" do
68
+ before :each do
69
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "503")
70
+ end
71
+
72
+ it "should return a ServiceUnavailable exception" do
73
+ lambda { ApiClient::Base.patch('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::ServiceUnavailable)
74
+ end
75
+ end
76
+
77
+ context "when response code is 2xx" do
78
+ before :each do
79
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "201", :body => '{"a": "a", "b": "b"}')
80
+ User.stub(:new).and_return(user)
81
+ end
82
+
83
+ it "should return a object initialized with the response" do
84
+ User.patch('http://api.example.com/user/5', {}).should == user
85
+ end
86
+ end
87
+
88
+ context "with a specified port" do
89
+ before :each do
90
+ FakeWeb.register_uri(:patch, "http://api.example.com:3001/user/5", :status => "201", :body => '{"a": "a", "b": "b"}')
91
+ User.stub(:new).and_return(user)
92
+ end
93
+
94
+ it "should return a object initialized with the response" do
95
+ User.patch('http://api.example.com:3001/user/5', {}).should == user
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApiClient::Base do
4
+ let(:user) { User.new(:a => "a", :b => "b") }
5
+
6
+ describe "#put" do
7
+ context "when connection is refused" do
8
+ before :each do
9
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :exception => Errno::ECONNREFUSED)
10
+ end
11
+
12
+ it "should return a ConnectionRefused exception" do
13
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::ConnectionRefused)
14
+ end
15
+ end
16
+
17
+ context "when response code is 401" do
18
+ before :each do
19
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "401")
20
+ end
21
+
22
+ it "should return a Unauthorized exception" do
23
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::Unauthorized)
24
+ end
25
+ end
26
+
27
+ context "when response code is 403" do
28
+ before :each do
29
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "403")
30
+ end
31
+
32
+ it "should return a Forbidden exception" do
33
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::Forbidden)
34
+ end
35
+ end
36
+
37
+ context "when response code is 404" do
38
+ before :each do
39
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "404")
40
+ end
41
+
42
+ it "should return a NotFound exception" do
43
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::NotFound)
44
+ end
45
+ end
46
+
47
+ context "when response code is 500" do
48
+ before :each do
49
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "500")
50
+ end
51
+
52
+ it "should return a InternalServerError exception" do
53
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::InternalServerError)
54
+ end
55
+ end
56
+
57
+ context "when response code is 502" do
58
+ before :each do
59
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "502")
60
+ end
61
+
62
+ it "should return a BadGateway exception" do
63
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::BadGateway)
64
+ end
65
+ end
66
+
67
+ context "when response code is 503" do
68
+ before :each do
69
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "503")
70
+ end
71
+
72
+ it "should return a ServiceUnavailable exception" do
73
+ lambda { ApiClient::Base.put('http://api.example.com/user/5', {}) }.should raise_error(ApiClient::Exceptions::ServiceUnavailable)
74
+ end
75
+ end
76
+
77
+ context "when response code is 2xx" do
78
+ before :each do
79
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "201", :body => '{"a": "a", "b": "b"}')
80
+ User.stub(:new).and_return(user)
81
+ end
82
+
83
+ it "should return a object initialized with the response" do
84
+ User.put('http://api.example.com/user/5', {}).should == user
85
+ end
86
+ end
87
+
88
+ context "with a specified port" do
89
+ before :each do
90
+ FakeWeb.register_uri(:put, "http://api.example.com:3001/user/5", :status => "201", :body => '{"a": "a", "b": "b"}')
91
+ User.stub(:new).and_return(user)
92
+ end
93
+
94
+ it "should return a object initialized with the response" do
95
+ User.put('http://api.example.com:3001/user/5', {}).should == user
96
+ end
97
+ end
98
+ end
99
+ end
@@ -7,7 +7,7 @@ describe ApiClient::Dispatcher do
7
7
  end
8
8
 
9
9
  it "should return the response code and body" do
10
- ApiClient::Base._get("http://api.example.com/user/5").should be_a(Net::HTTPOK)
10
+ ApiClient::Base._get("http://api.example.com/user/5", {}).should be_a(Net::HTTPOK)
11
11
  end
12
12
  end
13
13
 
@@ -17,7 +17,37 @@ describe ApiClient::Dispatcher do
17
17
  end
18
18
 
19
19
  it "should return the response code and body" do
20
- ApiClient::Base._post("http://api.example.com/user/5", {}).should be_a(Net::HTTPCreated)
20
+ ApiClient::Base._post("http://api.example.com/user/5", {}, {}).should be_a(Net::HTTPCreated)
21
+ end
22
+ end
23
+
24
+ describe "#_put" do
25
+ before :each do
26
+ FakeWeb.register_uri(:put, "http://api.example.com/user/5", :status => "200")
27
+ end
28
+
29
+ it "should return the response code and body" do
30
+ ApiClient::Base._put("http://api.example.com/user/5", {}, {}).should be_a(Net::HTTPOK)
31
+ end
32
+ end
33
+
34
+ describe "#_patch" do
35
+ before :each do
36
+ FakeWeb.register_uri(:patch, "http://api.example.com/user/5", :status => "200")
37
+ end
38
+
39
+ it "should return the response code and body" do
40
+ ApiClient::Base._patch("http://api.example.com/user/5", {}, {}).should be_a(Net::HTTPOK)
41
+ end
42
+ end
43
+
44
+ describe "#_delete" do
45
+ before :each do
46
+ FakeWeb.register_uri(:delete, "http://api.example.com/user/5", :status => "200")
47
+ end
48
+
49
+ it "should return the response code and body" do
50
+ ApiClient::Base._delete("http://api.example.com/user/5", {}).should be_a(Net::HTTPOK)
21
51
  end
22
52
  end
23
53
  end
@@ -7,7 +7,7 @@ describe ApiClient::Parser do
7
7
  FakeWeb.register_uri(:post, "http://api.example.com/user/5",
8
8
  :body => { :a => :b }.to_json,
9
9
  :status => "201")
10
- @response = ApiClient::Base._post('http://api.example.com/user/5', {})
10
+ @response = ApiClient::Base._post('http://api.example.com/user/5', {}, {})
11
11
  end
12
12
 
13
13
  it "should return the response code and the body parsed" do
@@ -20,7 +20,7 @@ describe ApiClient::Parser do
20
20
  FakeWeb.register_uri(:post, "http://api.example.com/user/5",
21
21
  :body => "wrong",
22
22
  :status => "201")
23
- @response = ApiClient::Base._post('http://api.example.com/user/5', {})
23
+ @response = ApiClient::Base._post('http://api.example.com/user/5', {}, {})
24
24
  end
25
25
 
26
26
  it "should return the response code and a nil body" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-03 00:00:00.000000000 Z
12
+ date: 2012-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -120,8 +120,11 @@ files:
120
120
  - lib/api-client/exceptions/unauthorized.rb
121
121
  - lib/api-client/parser.rb
122
122
  - lib/api-client/version.rb
123
+ - spec/api-client/base/delete_spec.rb
123
124
  - spec/api-client/base/get_spec.rb
125
+ - spec/api-client/base/patch_spec.rb
124
126
  - spec/api-client/base/post_spec.rb
127
+ - spec/api-client/base/put_spec.rb
125
128
  - spec/api-client/base_spec.rb
126
129
  - spec/api-client/dispatcher_spec.rb
127
130
  - spec/api-client/parser_spec.rb
@@ -138,12 +141,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
141
  - - ! '>='
139
142
  - !ruby/object:Gem::Version
140
143
  version: '0'
144
+ segments:
145
+ - 0
146
+ hash: 2002336376780002209
141
147
  required_rubygems_version: !ruby/object:Gem::Requirement
142
148
  none: false
143
149
  requirements:
144
150
  - - ! '>='
145
151
  - !ruby/object:Gem::Version
146
152
  version: '0'
153
+ segments:
154
+ - 0
155
+ hash: 2002336376780002209
147
156
  requirements: []
148
157
  rubyforge_project:
149
158
  rubygems_version: 1.8.24