rest_api 0.1.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 +18 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +13 -0
- data/LICENSE +22 -0
- data/README.md +367 -0
- data/Rakefile +2 -0
- data/lib/rest_api/api/request_parser.rb +96 -0
- data/lib/rest_api/api.rb +19 -0
- data/lib/rest_api/custom_api_method_call.rb +77 -0
- data/lib/rest_api/exceptions.rb +17 -0
- data/lib/rest_api/request_handler/client.rb +37 -0
- data/lib/rest_api/request_handler.rb +77 -0
- data/lib/rest_api/version.rb +3 -0
- data/lib/rest_api.rb +46 -0
- data/rest_api.gemspec +23 -0
- data/spec/rest_api/api/request_parser_spec.rb +199 -0
- data/spec/rest_api/api_spec.rb +13 -0
- data/spec/rest_api/custom_api_method_spec.rb +90 -0
- data/spec/rest_api/request_handler/client_spec.rb +93 -0
- data/spec/rest_api/request_handler_spec.rb +204 -0
- data/spec/rest_api/rest_api_spec.rb +32 -0
- data/spec/spec_helper.rb +7 -0
- metadata +123 -0
@@ -0,0 +1,204 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
|
6
|
+
describe "RestApi::request_hander" do
|
7
|
+
let (:fake_api_url) { "http://www.fakeurl.com/" }
|
8
|
+
before(:each) {
|
9
|
+
RestApi.unmap_resources
|
10
|
+
RestApi.setup do |config|
|
11
|
+
config.api_url = "http://www.fakeurl.com/"
|
12
|
+
end
|
13
|
+
}
|
14
|
+
|
15
|
+
describe "make_request" do
|
16
|
+
it "should raise an ApiConnectionException if the response is invalid when connection fails" do
|
17
|
+
FakeWeb.allow_net_connect = false
|
18
|
+
lambda {
|
19
|
+
RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/error"
|
20
|
+
}.should raise_exception(RestApi::Exceptions::ApiConnectionException)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should raise an ParseResponseException if the response is invalid when is not a JSON response" do
|
24
|
+
FakeWeb.allow_net_connect = false
|
25
|
+
FakeWeb.register_uri(:get, "http://www.fakeurl.com.br/json", :body => "")
|
26
|
+
lambda {
|
27
|
+
RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/json"
|
28
|
+
}.should raise_exception(RestApi::Exceptions::ParseResponseException)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should call client get when request type is get" do
|
32
|
+
RestApi::RequestHandler::Client.should_receive(:get).with("http://www.fakeurl.com.br/test", {})
|
33
|
+
RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/test"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should call client get with querystring when request type is get" do
|
37
|
+
RestApi::RequestHandler::Client.should_receive(:get).with("http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"})
|
38
|
+
RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"}
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should call client post when request type is post" do
|
42
|
+
RestApi::RequestHandler::Client.should_receive(:post).with("http://www.fakeurl.com.br/test", {:param => :one})
|
43
|
+
RestApi::RequestHandler.make_request :post, "http://www.fakeurl.com.br/test", {:param => :one}
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should call client put when request type is put" do
|
47
|
+
RestApi::RequestHandler::Client.should_receive(:put).with("http://www.fakeurl.com.br/test/4", {:param => :one})
|
48
|
+
RestApi::RequestHandler.make_request :put, "http://www.fakeurl.com.br/test/4", {:param => :one}
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should call client delete with querystring when request type is delete" do
|
52
|
+
RestApi::RequestHandler::Client.should_receive(:delete).with("http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"})
|
53
|
+
RestApi::RequestHandler.make_request :delete, "http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"}
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should call client delete when request type is delete" do
|
57
|
+
RestApi::RequestHandler::Client.should_receive(:delete).with("http://www.fakeurl.com.br/test/5", {})
|
58
|
+
RestApi::RequestHandler.make_request :delete, "http://www.fakeurl.com.br/test/5"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "method_missing" do
|
63
|
+
context "GET" do
|
64
|
+
context "Array parameters" do
|
65
|
+
it "should return the request url - simple case" do
|
66
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}usuarios", nil).and_return({ "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]})
|
67
|
+
RestApi.request.get_usuarios.should be == { "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]}
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should return the request url - complciated case" do
|
71
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}usuarios/3/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
72
|
+
|
73
|
+
RestApi.request.get_casas_from_usuarios(3).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should return the request url - complciated case" do
|
77
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
78
|
+
|
79
|
+
RestApi.request.get_casas_from_usuarios_in_administradores(3, 7).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "Hash parameters" do
|
84
|
+
it "should return the request url - more than one hash key" do
|
85
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
86
|
+
RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
it "should return the request url - one hash key" do
|
91
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/7/usuarios/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
92
|
+
RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:administradores => 7}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "Querystring" do
|
97
|
+
it "should return the request url with querystring" do
|
98
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", {:query => "test"}).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
99
|
+
RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}, :request_params => {:query => "test"}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
context "DELETE" do
|
104
|
+
context "Array parameters" do
|
105
|
+
it "should return the request url - simple case" do
|
106
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}usuarios", nil).and_return({ "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]})
|
107
|
+
RestApi.request.delete_usuarios.should be == { "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]}
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should return the request url - complciated case" do
|
111
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}usuarios/3/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
112
|
+
|
113
|
+
RestApi.request.delete_casas_from_usuarios(3).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should return the request url - complciated case" do
|
117
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
118
|
+
|
119
|
+
RestApi.request.delete_casas_from_usuarios_in_administradores(3, 7).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "Hash parameters" do
|
124
|
+
it "should return the request url - more than one hash key" do
|
125
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
126
|
+
RestApi.request.delete_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
it "should return the request url - one hash key" do
|
131
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/7/usuarios/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
|
132
|
+
RestApi.request.delete_casas_from_usuarios_in_administradores(:resources_params => {:administradores => 7}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "PUT" do
|
138
|
+
context "Array parameters" do
|
139
|
+
it "should return the request url" do
|
140
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
|
141
|
+
RestApi.request.put_usuarios(:request_params => {:usuarios => 5}).should be == { "status" => "ok" }
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should return the request url" do
|
145
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}administradores/update", {:administradores => 5}).and_return({ "status" => "ok" })
|
146
|
+
RestApi.request.put_update_in_administradores(:request_params => {:administradores => 5}).should be == { "status" => "ok" }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context "Hash parameters" do
|
151
|
+
it "should return the request url" do
|
152
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
|
153
|
+
RestApi.request.put_usuarios(:usuarios => 5).should be == { "status" => "ok" }
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should return the request url" do
|
157
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios/casas", {:usuarios_id => 5, :casa_id => 15}).and_return({ "status" => "ok" })
|
158
|
+
RestApi.request.put_casas_in_usuarios(:usuarios_id => 5, :casa_id => 15).should be == { "status" => "ok" }
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "POST" do
|
164
|
+
context "Array parameters" do
|
165
|
+
it "should return the request url" do
|
166
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios/create", {:usuarios_nome => "teste"}).and_return({ "status" => "ok" })
|
167
|
+
RestApi.request.post_create_usuarios(:request_params => {:usuarios_nome => "teste"}).should be == { "status" => "ok" }
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should return the request url" do
|
171
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}administradores/create", {:usuarios_nome => "teste"}).and_return({ "status" => "ok" })
|
172
|
+
RestApi.request.post_create_in_administradores(:request_params => {:usuarios_nome => "teste"}).should be == { "status" => "ok" }
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
context "Hash parameters" do
|
177
|
+
it "should return the request url" do
|
178
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
|
179
|
+
RestApi.request.post_usuarios(:usuarios => 5).should be == { "status" => "ok" }
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should return the request url" do
|
183
|
+
RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios/casas", {:usuarios_id => 5, :casa_id => 15}).and_return({ "status" => "ok" })
|
184
|
+
RestApi.request.post_casas_in_usuarios(:usuarios_id => 5, :casa_id => 15).should be == { "status" => "ok" }
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
describe "get_params_from_array_arguments" do
|
191
|
+
it "should return resources hash from a simple array" do
|
192
|
+
RestApi.request.get_params_from_array_arguments([2,3,4,5]).should be == {:resources_params => [2,3,4,5]}
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should return resources hash from a simple array and request_params" do
|
196
|
+
RestApi.request.get_params_from_array_arguments([2,3,4,5, { :parametro1 => "true"}]).should be == {:resources_params => [2,3,4,5], :request_params => { :parametro1 => "true"}}
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should return resources hash from an array with position 0 with a hash" do
|
200
|
+
RestApi.request.get_params_from_array_arguments([{:resources_params => [2,4,5], :request_params => { :parametro1 => "true"}}]).should be == {:resources_params => [2,4,5], :request_params => { :parametro1 => "true"}}
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe "RestApi" do
|
6
|
+
|
7
|
+
it "should yield self" do
|
8
|
+
RestApi.setup do |config|
|
9
|
+
config.should be == RestApi
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should configure api_url - with slash" do
|
14
|
+
RestApi.setup do |config|
|
15
|
+
config.api_url = "http://www.localhost.com:4000/"
|
16
|
+
end
|
17
|
+
RestApi.instance_eval { api_url }.should be == "http://www.localhost.com:4000/"
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
it "should configure api_url - whithout slash" do
|
22
|
+
RestApi.setup do |config|
|
23
|
+
config.api_url = "http://www.localhost.com:4000"
|
24
|
+
end
|
25
|
+
RestApi.instance_eval { api_url }.should be == "http://www.localhost.com:4000/"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return the request parser" do
|
29
|
+
RestApi.request_parser.should be == RestApi::API::RequestParser
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rest_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Codus Tecnologia
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '1.7'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '1.7'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rest-client
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.6'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.6'
|
62
|
+
description: An API client for any application!
|
63
|
+
email:
|
64
|
+
- vinicius.oyama@codus.com.br
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- .gitignore
|
70
|
+
- .rspec
|
71
|
+
- .rvmrc
|
72
|
+
- Gemfile
|
73
|
+
- LICENSE
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- lib/rest_api.rb
|
77
|
+
- lib/rest_api/api.rb
|
78
|
+
- lib/rest_api/api/request_parser.rb
|
79
|
+
- lib/rest_api/custom_api_method_call.rb
|
80
|
+
- lib/rest_api/exceptions.rb
|
81
|
+
- lib/rest_api/request_handler.rb
|
82
|
+
- lib/rest_api/request_handler/client.rb
|
83
|
+
- lib/rest_api/version.rb
|
84
|
+
- rest_api.gemspec
|
85
|
+
- spec/rest_api/api/request_parser_spec.rb
|
86
|
+
- spec/rest_api/api_spec.rb
|
87
|
+
- spec/rest_api/custom_api_method_spec.rb
|
88
|
+
- spec/rest_api/request_handler/client_spec.rb
|
89
|
+
- spec/rest_api/request_handler_spec.rb
|
90
|
+
- spec/rest_api/rest_api_spec.rb
|
91
|
+
- spec/spec_helper.rb
|
92
|
+
homepage: https://github.com/codus/rest_api
|
93
|
+
licenses: []
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options: []
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 1.8.24
|
113
|
+
signing_key:
|
114
|
+
specification_version: 3
|
115
|
+
summary: An API client for any application!
|
116
|
+
test_files:
|
117
|
+
- spec/rest_api/api/request_parser_spec.rb
|
118
|
+
- spec/rest_api/api_spec.rb
|
119
|
+
- spec/rest_api/custom_api_method_spec.rb
|
120
|
+
- spec/rest_api/request_handler/client_spec.rb
|
121
|
+
- spec/rest_api/request_handler_spec.rb
|
122
|
+
- spec/rest_api/rest_api_spec.rb
|
123
|
+
- spec/spec_helper.rb
|