haipa 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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