passive_resource 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- raise PassiveResource::InvalidSeedlingException, "A hash like object or a collection of hash like objects is required"
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)
@@ -1,3 +1,3 @@
1
1
  module PassiveResource
2
- class InvalidSeedlingException < StandardError; end
2
+ class ParseError < StandardError; end
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module PassiveResource
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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 or hashes}
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.1.1
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-26 00:00:00.000000000 Z
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: &70223351633340 !ruby/object:Gem::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: *70223351633340
24
+ version_requirements: *2157149640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70223351632720 !ruby/object:Gem::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: *70223351632720
35
+ version_requirements: *2157148520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70223351631940 !ruby/object:Gem::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: *70223351631940
47
- description: Creates Ruby objects from JSON requested from apis or hashes
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: []