api_resource 0.6.13 → 0.6.14
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +2 -1
- data/Gemfile.lock +4 -0
- data/Rakefile +4 -2
- data/api_resource.gemspec +1 -0
- data/lib/api_resource/connection.rb +34 -24
- data/lib/api_resource/formats/json_format.rb +1 -5
- data/lib/api_resource/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- metadata +18 -2
data/.rspec
CHANGED
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require 'rspec/core/rake_task'
|
4
4
|
|
5
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
6
|
+
t.rspec_opts = %w[-f JUnit -o results.xml]
|
7
|
+
end
|
6
8
|
|
7
9
|
task :default => :spec
|
8
|
-
task :ci => %w(rspec benchmark)
|
10
|
+
task :ci => %w(rspec benchmark)
|
data/api_resource.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.add_development_dependency "rake"
|
20
20
|
gem.add_development_dependency "rspec"
|
21
21
|
gem.add_development_dependency "spork"
|
22
|
+
gem.add_development_dependency "yarjuf"
|
22
23
|
# this latest version of mocha is not compatible with the rails
|
23
24
|
# 3.2.9
|
24
25
|
gem.add_development_dependency "mocha", ["=0.12.7"]
|
@@ -11,7 +11,7 @@ module ApiResource
|
|
11
11
|
# services.
|
12
12
|
class Connection
|
13
13
|
|
14
|
-
HTTP_FORMAT_HEADER_NAMES = {
|
14
|
+
HTTP_FORMAT_HEADER_NAMES = {
|
15
15
|
:get => 'Accept',
|
16
16
|
:put => 'Content-Type',
|
17
17
|
:post => 'Content-Type',
|
@@ -52,7 +52,7 @@ module ApiResource
|
|
52
52
|
end
|
53
53
|
|
54
54
|
# make a put request
|
55
|
-
# @return [String] response.body raises an
|
55
|
+
# @return [String] response.body raises an
|
56
56
|
# ApiResource::ConnectionError if we
|
57
57
|
# have a timeout, general exception, or
|
58
58
|
# if result.code is not within 200..399
|
@@ -65,43 +65,53 @@ module ApiResource
|
|
65
65
|
format.decode(request(:get, path, headers))
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def delete(path, headers = self.headers)
|
70
70
|
request(:delete, path, build_request_headers(headers, :delete, self.site.merge(path)))
|
71
71
|
return true
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
def head(path, headers = self.headers)
|
75
75
|
request(:head, path, build_request_headers(headers, :head, self.site.merge(path)))
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
# make a put request
|
79
|
-
# @return [String] response.body raises an
|
79
|
+
# @return [String] response.body raises an
|
80
80
|
# ApiResource::ConnectionError if we
|
81
81
|
# have a timeout, general exception, or
|
82
82
|
# if result.code is not within 200..399
|
83
83
|
def put(path, body = {}, headers = self.headers)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
build_request_headers(headers, :put, self.site.merge(path))
|
90
|
-
)
|
84
|
+
response = request(
|
85
|
+
:put,
|
86
|
+
path,
|
87
|
+
body,
|
88
|
+
build_request_headers(headers, :put, self.site.merge(path))
|
91
89
|
)
|
90
|
+
# handle blank response and return true
|
91
|
+
if response.blank?
|
92
|
+
return {}
|
93
|
+
# we used to decode JSON in the response, but we don't want to
|
94
|
+
# do that anymore - we will issue a warning but keep the behavior
|
95
|
+
else
|
96
|
+
ApiResource.logger.warn(
|
97
|
+
"[DEPRECATION] Returning a response body from a PUT " +
|
98
|
+
"is deprecated. \n#{response.pretty_inspect} was returned."
|
99
|
+
)
|
100
|
+
return format.decode(response)
|
101
|
+
end
|
92
102
|
end
|
93
|
-
|
103
|
+
|
94
104
|
# make a post request
|
95
|
-
# @return [String] response.body raises an
|
105
|
+
# @return [String] response.body raises an
|
96
106
|
# ApiResource::ConnectionError if we
|
97
107
|
# have a timeout, general exception, or
|
98
108
|
# if result.code is not within 200..399
|
99
109
|
def post(path, body = {}, headers = self.headers)
|
100
110
|
format.decode(
|
101
111
|
request(
|
102
|
-
:post,
|
103
|
-
path,
|
104
|
-
body,
|
112
|
+
:post,
|
113
|
+
path,
|
114
|
+
body,
|
105
115
|
build_request_headers(headers, :post, self.site.merge(path))
|
106
116
|
)
|
107
117
|
)
|
@@ -127,14 +137,14 @@ module ApiResource
|
|
127
137
|
|
128
138
|
private
|
129
139
|
# Makes a request to the remote service
|
130
|
-
# @return [String] response.body raises an
|
140
|
+
# @return [String] response.body raises an
|
131
141
|
# ApiResource::ConnectionError if we
|
132
142
|
# have a timeout, general exception, or
|
133
143
|
# if result.code is not within 200..399
|
134
144
|
def request(method, path, *arguments)
|
135
145
|
handle_response(path) do
|
136
146
|
ActiveSupport::Notifications.instrument("request.api_resource") do |payload|
|
137
|
-
|
147
|
+
|
138
148
|
# debug logging
|
139
149
|
ApiResource.logger.info("#{method.to_s.upcase} #{site.scheme}://#{site.host}:#{site.port}#{path}")
|
140
150
|
payload[:method] = method
|
@@ -161,7 +171,7 @@ module ApiResource
|
|
161
171
|
end
|
162
172
|
return propogate_response_or_error(result, result.code)
|
163
173
|
end
|
164
|
-
|
174
|
+
|
165
175
|
def propogate_response_or_error(response, code)
|
166
176
|
case code.to_i
|
167
177
|
when 301,302
|
@@ -194,7 +204,7 @@ module ApiResource
|
|
194
204
|
raise ApiResource::ConnectionError.new(response, :message => "Unknown response code: #{code}")
|
195
205
|
end
|
196
206
|
end
|
197
|
-
|
207
|
+
|
198
208
|
# Creates new Net::HTTP instance for communication with the
|
199
209
|
# remote service and resources.
|
200
210
|
def http(path)
|
@@ -203,11 +213,11 @@ module ApiResource
|
|
203
213
|
end
|
204
214
|
RestClient::Resource.new("#{site.scheme}://#{site.host}:#{site.port}#{path}", {:timeout => ApiResource::Base.timeout, :open_timeout => ApiResource::Base.open_timeout})
|
205
215
|
end
|
206
|
-
|
216
|
+
|
207
217
|
def build_request_headers(headers, verb, uri)
|
208
218
|
http_format_header(verb).update(headers)
|
209
219
|
end
|
210
|
-
|
220
|
+
|
211
221
|
def http_format_header(verb)
|
212
222
|
{}.tap do |ret|
|
213
223
|
ret[HTTP_FORMAT_HEADER_NAMES[verb]] = format.mime_type
|
data/lib/api_resource/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
@@ -61,6 +61,22 @@ dependencies:
|
|
61
61
|
- - ! '>='
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: yarjuf
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
64
80
|
- !ruby/object:Gem::Dependency
|
65
81
|
name: mocha
|
66
82
|
requirement: !ruby/object:Gem::Requirement
|