passive_resource 0.1.1 → 0.2.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/lib/passive_resource/base.rb +5 -2
- data/lib/passive_resource/error.rb +1 -1
- data/lib/passive_resource/version.rb +1 -1
- data/passive_resource.gemspec +2 -2
- data/spec/base_spec.rb +4 -0
- metadata +11 -10
@@ -2,6 +2,7 @@ module PassiveResource
|
|
2
2
|
class Base
|
3
3
|
require 'active_support/core_ext/hash/indifferent_access'
|
4
4
|
require 'active_support/json'
|
5
|
+
require 'active_support/core_ext/hash'
|
5
6
|
require 'rest_client'
|
6
7
|
|
7
8
|
HASH_METHODS = (ActiveSupport::HashWithIndifferentAccess.new.methods - Object.new.methods)
|
@@ -13,7 +14,8 @@ module PassiveResource
|
|
13
14
|
elsif self.class.collection?(p)
|
14
15
|
@seedling = self.class.many(p)
|
15
16
|
else
|
16
|
-
|
17
|
+
message = p.is_a?(String) ? "The data from the remote service was unparseable" : "A hash like object or a collection of hash like objects is required."
|
18
|
+
raise PassiveResource::ParseError, message
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
@@ -59,7 +61,8 @@ module PassiveResource
|
|
59
61
|
|
60
62
|
def load_from_url(url)
|
61
63
|
rtn = RestClient.get(url)
|
62
|
-
JSON.parse(rtn)
|
64
|
+
res = JSON.parse(rtn) rescue nil
|
65
|
+
res ||= Hash.from_xml(rtn) rescue nil
|
63
66
|
end
|
64
67
|
|
65
68
|
def self.nestable?(obj)
|
data/passive_resource.gemspec
CHANGED
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.version = PassiveResource::VERSION
|
10
10
|
s.authors = ["Grady Griffin"]
|
11
11
|
s.email = ["gradyg@izea.com"]
|
12
|
-
s.homepage = ""
|
12
|
+
s.homepage = "https://github.com/thegboat/passive_resource"
|
13
13
|
s.summary = %q{Simple objects from json}
|
14
|
-
s.description = %q{Creates Ruby objects from JSON requested from apis
|
14
|
+
s.description = %q{Creates Ruby objects from ruby hash-like objects or JSON/XML requested from apis}
|
15
15
|
|
16
16
|
s.rubyforge_project = "passive_resource"
|
17
17
|
|
data/spec/base_spec.rb
CHANGED
@@ -29,6 +29,10 @@ describe PassiveResource::Base, "#new" do
|
|
29
29
|
instance = PassiveResource::Base.new(:name => 'grady')
|
30
30
|
instance.respond_to?('name').should eq(true)
|
31
31
|
end
|
32
|
+
|
33
|
+
it "should raise exception for unprocessable objects" do
|
34
|
+
lambda { PassiveResource::Base.new(nil) }.should raise_error(PassiveResource::ParseError)
|
35
|
+
end
|
32
36
|
end
|
33
37
|
|
34
38
|
describe PassiveResource::Base, "#seedling" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passive_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157149640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>'
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157149640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &2157148520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2157148520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2157145060 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,8 +43,9 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
description: Creates Ruby objects from
|
46
|
+
version_requirements: *2157145060
|
47
|
+
description: Creates Ruby objects from ruby hash-like objects or JSON/XML requested
|
48
|
+
from apis
|
48
49
|
email:
|
49
50
|
- gradyg@izea.com
|
50
51
|
executables: []
|
@@ -63,7 +64,7 @@ files:
|
|
63
64
|
- spec/.rspec
|
64
65
|
- spec/base_spec.rb
|
65
66
|
- spec/spec_helper.rb
|
66
|
-
homepage:
|
67
|
+
homepage: https://github.com/thegboat/passive_resource
|
67
68
|
licenses: []
|
68
69
|
post_install_message:
|
69
70
|
rdoc_options: []
|