api-resource 0.5.1 → 0.5.2
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.
- checksums.yaml +4 -4
- data/lib/api-resource/resource.rb +55 -13
- data/lib/api-resource/version.rb +1 -1
- data/spec/resource_spec.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e46ba73409d59af235f64ccaebdd554a627d284
|
4
|
+
data.tar.gz: 6f8b0023573cb1d2895371a77732c10b5a7e8786
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bda443d6b27415cfd8e53519e14ebfa3781eb30f3158a4644db23ecc0b56668a72059c36e2a2f67bfb9721e4b981c9d1982d5a57128451167c0ff6cfd1191617
|
7
|
+
data.tar.gz: 6e49673ae732c15b76ac12086fa83c0c174a87d77796d6140e9e7615c8a29983ce2cd9463a64c18596b8998f14752748ff62a93d80ee96ec01cc942c7594796f
|
@@ -23,7 +23,7 @@ module ApiResource
|
|
23
23
|
class_attribute :api_secret
|
24
24
|
class_attribute :hmac_options
|
25
25
|
class_attribute :submitted_attributes_filter
|
26
|
-
|
26
|
+
class_attribute :log
|
27
27
|
|
28
28
|
def self.with_hmac(api_id, api_secret, options={})
|
29
29
|
self.hmac = true
|
@@ -173,7 +173,7 @@ module ApiResource
|
|
173
173
|
when /^by_(.+)/
|
174
174
|
with_parent_resource(args[0], $1) unless args.empty?
|
175
175
|
else
|
176
|
-
|
176
|
+
super
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
@@ -193,7 +193,7 @@ module ApiResource
|
|
193
193
|
def self.load_class(tableized_class)
|
194
194
|
tableized_class = name.to_s.tableize.split('/')[0...-1].push(tableized_class).join('/')
|
195
195
|
klass = tableized_class && tableized_class.to_s.singularize.classify.constantize rescue nil
|
196
|
-
klass if klass && klass <
|
196
|
+
klass if klass && klass < Logging::Resource
|
197
197
|
end
|
198
198
|
|
199
199
|
def self.client(verb, params, *paths)
|
@@ -210,7 +210,9 @@ module ApiResource
|
|
210
210
|
if hmac
|
211
211
|
req.sign!(api_id, api_secret, hmac_options)
|
212
212
|
end
|
213
|
-
req.execute
|
213
|
+
result = req.execute
|
214
|
+
Logging.log << result
|
215
|
+
result
|
214
216
|
end
|
215
217
|
|
216
218
|
def self.build_url(*paths)
|
@@ -218,17 +220,57 @@ module ApiResource
|
|
218
220
|
URI::parse(base_url).merge(paths.map { |p| "#{URI.encode p.to_s}" }.join('/')).to_s
|
219
221
|
end
|
220
222
|
|
221
|
-
|
222
|
-
|
223
|
+
def self.logger=(param)
|
224
|
+
self.log = create_log(param)
|
225
|
+
end
|
223
226
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
227
|
+
def self.logger
|
228
|
+
self.log ||= Class.new do
|
229
|
+
def <<(_)
|
230
|
+
end
|
231
|
+
end.new
|
232
|
+
end
|
228
233
|
|
229
|
-
|
230
|
-
|
234
|
+
# Create a log that respond to << like a logger
|
235
|
+
# param can be 'stdout', 'stderr', a string (then we will log to that file) or a logger (then we return it)
|
236
|
+
def self.create_log(param)
|
237
|
+
return param unless param.is_a? String
|
238
|
+
case param
|
239
|
+
when 'stdout'
|
240
|
+
Class.new do
|
241
|
+
def <<(obj)
|
242
|
+
STDOUT.puts obj
|
243
|
+
end
|
244
|
+
end.new
|
245
|
+
when 'stderr'
|
246
|
+
Class.new do
|
247
|
+
def <<(obj)
|
248
|
+
STDERR.puts obj
|
249
|
+
end
|
250
|
+
end.new
|
251
|
+
else
|
252
|
+
Class.new do
|
253
|
+
def initialize(file)
|
254
|
+
@file = file
|
255
|
+
end
|
256
|
+
|
257
|
+
def <<(obj)
|
258
|
+
File.open(@file, 'a') { |f| f.puts obj }
|
259
|
+
end
|
260
|
+
end.new(param)
|
231
261
|
end
|
232
262
|
end
|
233
263
|
end
|
234
|
-
|
264
|
+
class ResourceCollection
|
265
|
+
include Enumerable
|
266
|
+
|
267
|
+
def initialize(data, meta, klass)
|
268
|
+
meta.each { |k, v| self.class.class_eval { define_method(k) { v } } } if meta
|
269
|
+
@resources = data.map { |e| klass.new(e) }
|
270
|
+
end
|
271
|
+
|
272
|
+
def each(&block)
|
273
|
+
@resources.each(&block)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
data/lib/api-resource/version.rb
CHANGED
data/spec/resource_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
RSpec.describe
|
1
|
+
RSpec.describe Logging::Resource do
|
2
2
|
module BlogApi
|
3
|
-
class Resource <
|
3
|
+
class Resource < Logging::Resource
|
4
4
|
self.base_url = 'http://api.example.com'
|
5
5
|
end
|
6
6
|
|
@@ -195,7 +195,7 @@ RSpec.describe ApiResource::Resource do
|
|
195
195
|
|
196
196
|
context 'empty base_url' do
|
197
197
|
it 'throws on requests' do
|
198
|
-
class Foo <
|
198
|
+
class Foo < Logging::Resource;
|
199
199
|
end
|
200
200
|
expect(-> { Foo.all }).to raise_exception(StandardError)
|
201
201
|
end
|
@@ -271,7 +271,7 @@ RSpec.describe ApiResource::Resource do
|
|
271
271
|
it 'sets the returned errors' do
|
272
272
|
expected_value = { errors: { password_confrimation: ["can't be blank"], email: ["can't be blank", 'is invalid'] } }
|
273
273
|
stub = req(:post, '/sign_up', expected_value, 422, sign_up.attributes)
|
274
|
-
expect(proc { sign_up.submit! }).to raise_error(
|
274
|
+
expect(proc { sign_up.submit! }).to raise_error(Logging::ResourceError)
|
275
275
|
expect(sign_up.errors.messages).to match(expected_value[:errors])
|
276
276
|
expect(stub).to have_been_requested
|
277
277
|
end
|
@@ -279,7 +279,7 @@ RSpec.describe ApiResource::Resource do
|
|
279
279
|
it 'no request if not valid' do
|
280
280
|
sign_up.name = nil
|
281
281
|
stub = req(:post, '/sign_up', nil, 422)
|
282
|
-
expect(proc { sign_up.submit! }).to raise_error(
|
282
|
+
expect(proc { sign_up.submit! }).to raise_error(Logging::ResourceError)
|
283
283
|
expect(sign_up.errors[:name]).to be_truthy
|
284
284
|
expect(stub).to_not have_been_requested
|
285
285
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chaker Nakhli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simple-hmac
|