haipa 0.0.4 → 0.0.5

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/haipa.rb CHANGED
@@ -11,7 +11,7 @@ require 'haipa/links'
11
11
  require 'haipa/embedded'
12
12
 
13
13
  module Haipa
14
- def self.api(params={})
15
- Api.new(params, &Proc.new)
14
+ def self.api(params={}, &block)
15
+ Api.new(params, &block)
16
16
  end
17
17
  end
data/lib/haipa/api.rb CHANGED
@@ -12,7 +12,7 @@ module Haipa
12
12
  @conn = Faraday.new(defaults.deep_merge(params)) do |conn|
13
13
  yield conn if block_given?
14
14
  end
15
- @resource = Resource.new(self,'')
15
+ @resource = Resource.new(self, @uri)
16
16
  end
17
17
 
18
18
  def defaults
@@ -3,6 +3,7 @@ module Haipa
3
3
  extend Forwardable
4
4
 
5
5
  attr_reader :data, :resource
6
+ alias :to_hash :data
6
7
  def_delegators :@data, :empty?, :has_key?
7
8
 
8
9
  def initialize(resource, data)
@@ -10,10 +11,6 @@ module Haipa
10
11
  @resource = resource
11
12
  end
12
13
 
13
- def to_hash
14
- @data
15
- end
16
-
17
14
  def method_missing(name, *args, &block)
18
15
  if data.has_key?(name)
19
16
  from_array(data[name])
data/lib/haipa/links.rb CHANGED
@@ -3,6 +3,7 @@ module Haipa
3
3
  extend Forwardable
4
4
 
5
5
  attr_reader :data, :resource
6
+ alias :to_hash :data
6
7
  def_delegators :@data, :empty?, :has_key?
7
8
 
8
9
  def initialize(resource, data)
@@ -10,10 +11,6 @@ module Haipa
10
11
  @resource = resource
11
12
  end
12
13
 
13
- def to_hash
14
- @data
15
- end
16
-
17
14
  def method_missing(name, *args, &block)
18
15
  if @data.has_key?(name)
19
16
  href = @data[name]['href']
@@ -1,6 +1,10 @@
1
1
  module Haipa
2
+ class EmptyResponseError < StandardError; end
3
+ class FailureResponseError < StandardError; end
4
+
2
5
  class Resource
3
- attr_reader :api, :uri
6
+ attr_reader :api, :uri, :data
7
+ alias :to_hash :data
4
8
 
5
9
  def initialize(api, uri, data=nil)
6
10
  @api = api
@@ -15,7 +19,10 @@ module Haipa
15
19
 
16
20
  def get
17
21
  return {} unless uri
18
- @data ||= ::Hashie::Mash.new(JSON.parse(api.get(uri).body))
22
+ response = api.get(uri)
23
+ raise FailureResponseError unless response.success?
24
+ raise EmptyResponseError if response.body.blank?
25
+ @data ||= ::Hashie::Mash.new(JSON.parse(response.body))
19
26
  end
20
27
 
21
28
  def embedded
data/lib/haipa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Haipa
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haipa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-27 00:00:00.000000000 Z
12
+ date: 2013-04-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.8'
16
22
  requirement: !ruby/object:Gem::Requirement
17
23
  none: false
18
24
  requirements:
@@ -21,14 +27,14 @@ dependencies:
21
27
  version: '0.8'
22
28
  type: :runtime
23
29
  prerelease: false
30
+ - !ruby/object:Gem::Dependency
31
+ name: hashie
24
32
  version_requirements: !ruby/object:Gem::Requirement
25
33
  none: false
26
34
  requirements:
27
35
  - - ~>
28
36
  - !ruby/object:Gem::Version
29
- version: '0.8'
30
- - !ruby/object:Gem::Dependency
31
- name: hashie
37
+ version: 2.0.0
32
38
  requirement: !ruby/object:Gem::Requirement
33
39
  none: false
34
40
  requirements:
@@ -37,14 +43,14 @@ dependencies:
37
43
  version: 2.0.0
38
44
  type: :runtime
39
45
  prerelease: false
46
+ - !ruby/object:Gem::Dependency
47
+ name: addressable
40
48
  version_requirements: !ruby/object:Gem::Requirement
41
49
  none: false
42
50
  requirements:
43
51
  - - ~>
44
52
  - !ruby/object:Gem::Version
45
- version: 2.0.0
46
- - !ruby/object:Gem::Dependency
47
- name: addressable
53
+ version: 2.3.0
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  none: false
50
56
  requirements:
@@ -53,14 +59,14 @@ dependencies:
53
59
  version: 2.3.0
54
60
  type: :runtime
55
61
  prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
65
  none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
61
- version: 2.3.0
62
- - !ruby/object:Gem::Dependency
63
- name: bundler
69
+ version: '1.3'
64
70
  requirement: !ruby/object:Gem::Requirement
65
71
  none: false
66
72
  requirements:
@@ -69,44 +75,38 @@ dependencies:
69
75
  version: '1.3'
70
76
  type: :development
71
77
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '1.3'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: rake
80
- requirement: !ruby/object:Gem::Requirement
80
+ version_requirements: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
86
+ requirement: !ruby/object:Gem::Requirement
89
87
  none: false
90
88
  requirements:
91
89
  - - ! '>='
92
90
  - !ruby/object:Gem::Version
93
91
  version: '0'
92
+ type: :development
93
+ prerelease: false
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rspec
96
- requirement: !ruby/object:Gem::Requirement
96
+ version_requirements: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
101
  version: 2.13.0
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
102
+ requirement: !ruby/object:Gem::Requirement
105
103
  none: false
106
104
  requirements:
107
105
  - - ~>
108
106
  - !ruby/object:Gem::Version
109
107
  version: 2.13.0
108
+ type: :development
109
+ prerelease: false
110
110
  description: HAL hypermedia client
111
111
  email:
112
112
  - jon@doveston.me.uk
@@ -144,21 +144,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
144
  - - ! '>='
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
+ hash: -3000700123602118034
147
148
  segments:
148
149
  - 0
149
- hash: -2216550637168734427
150
150
  required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ! '>='
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
+ hash: -3000700123602118034
156
157
  segments:
157
158
  - 0
158
- hash: -2216550637168734427
159
159
  requirements: []
160
160
  rubyforge_project:
161
- rubygems_version: 1.8.23
161
+ rubygems_version: 1.8.24
162
162
  signing_key:
163
163
  specification_version: 3
164
164
  summary: HAL hypermedia client