harpy 0.1.7 → 0.1.8
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/.gitignore +1 -0
- data/.travis.yml +9 -0
- data/README.md +4 -2
- data/lib/harpy/collection.rb +18 -0
- data/lib/harpy/resource.rb +2 -2
- data/lib/harpy/version.rb +1 -1
- data/lib/harpy.rb +1 -0
- data/spec/harpy/resource_spec.rb +3 -1
- metadata +21 -21
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -159,8 +159,10 @@ Usage
|
|
159
159
|
})
|
160
160
|
# => {FirstModel => [...], SecondModel => [...]}
|
161
161
|
|
162
|
-
|
163
|
-
|
162
|
+
Build Status
|
163
|
+
---------
|
164
|
+
|
165
|
+
[](http://travis-ci.org/TalentBox/harpy)
|
164
166
|
|
165
167
|
License
|
166
168
|
-------
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Harpy
|
2
|
+
class Collection
|
3
|
+
include Resource
|
4
|
+
def initialize(attrs = nil)
|
5
|
+
attrs = attrs || {}
|
6
|
+
@items = attrs.delete :items
|
7
|
+
super attrs
|
8
|
+
end
|
9
|
+
private
|
10
|
+
def method_missing(method, *args)
|
11
|
+
if @items.respond_to? method
|
12
|
+
@items.send method, *args
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/harpy/resource.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "harpy/client"
|
2
1
|
require "active_support"
|
3
2
|
require "active_support/core_ext/object/blank"
|
4
3
|
require "active_support/core_ext/numeric/bytes"
|
@@ -65,7 +64,8 @@ module Harpy
|
|
65
64
|
case response.code
|
66
65
|
when 200
|
67
66
|
parsed = Yajl::Parser.parse response.body
|
68
|
-
parsed[resource_name].collect{|model| new model}
|
67
|
+
items = parsed[resource_name].collect{|model| new model}
|
68
|
+
Harpy::Collection.new parsed.merge(items: items)
|
69
69
|
else
|
70
70
|
Harpy.client.invalid_code response
|
71
71
|
end
|
data/lib/harpy/version.rb
CHANGED
data/lib/harpy.rb
CHANGED
@@ -9,6 +9,7 @@ module Harpy
|
|
9
9
|
class InvalidResponseCode < Exception; end
|
10
10
|
|
11
11
|
autoload :Client, "harpy/client"
|
12
|
+
autoload :Collection, "harpy/collection"
|
12
13
|
autoload :EntryPoint, "harpy/entry_point"
|
13
14
|
autoload :Resource, "harpy/resource"
|
14
15
|
autoload :BodyToBig, "harpy/resource"
|
data/spec/harpy/resource_spec.rb
CHANGED
@@ -326,10 +326,12 @@ describe "class including Harpy::Resource" do
|
|
326
326
|
eos
|
327
327
|
Harpy.client.should_receive(:get).with(url, :params => {"firstname" => "Anthony"}).and_return response
|
328
328
|
companies = Harpy::Spec::Company.search "firstname" => "Anthony"
|
329
|
-
companies.should
|
329
|
+
companies.should be_kind_of Harpy::Collection
|
330
|
+
companies.size.should == 1
|
330
331
|
companies.first.should be_kind_of Harpy::Spec::Company
|
331
332
|
companies.first.firstname.should == "Anthony"
|
332
333
|
companies.first.id.should == "1"
|
334
|
+
companies.url.should == url
|
333
335
|
end
|
334
336
|
it "delegates other response codes to client" do
|
335
337
|
response = Typhoeus::Response.new :code => 500
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harpy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,12 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-08-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-08-22 00:00:00.000000000Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: typhoeus
|
18
|
-
requirement: &
|
17
|
+
requirement: &2151753400 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
19
|
requirements:
|
21
20
|
- - ~>
|
@@ -23,10 +22,10 @@ dependencies:
|
|
23
22
|
version: 0.2.4
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
|
-
version_requirements: *
|
25
|
+
version_requirements: *2151753400
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: activesupport
|
29
|
-
requirement: &
|
28
|
+
requirement: &2151750940 !ruby/object:Gem::Requirement
|
30
29
|
none: false
|
31
30
|
requirements:
|
32
31
|
- - ! '>='
|
@@ -34,10 +33,10 @@ dependencies:
|
|
34
33
|
version: 3.0.0
|
35
34
|
type: :runtime
|
36
35
|
prerelease: false
|
37
|
-
version_requirements: *
|
36
|
+
version_requirements: *2151750940
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
38
|
name: activemodel
|
40
|
-
requirement: &
|
39
|
+
requirement: &2151755800 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ! '>='
|
@@ -45,10 +44,10 @@ dependencies:
|
|
45
44
|
version: 3.0.0
|
46
45
|
type: :runtime
|
47
46
|
prerelease: false
|
48
|
-
version_requirements: *
|
47
|
+
version_requirements: *2151755800
|
49
48
|
- !ruby/object:Gem::Dependency
|
50
49
|
name: hash-deep-merge
|
51
|
-
requirement: &
|
50
|
+
requirement: &2151797880 !ruby/object:Gem::Requirement
|
52
51
|
none: false
|
53
52
|
requirements:
|
54
53
|
- - ~>
|
@@ -56,10 +55,10 @@ dependencies:
|
|
56
55
|
version: 0.1.1
|
57
56
|
type: :runtime
|
58
57
|
prerelease: false
|
59
|
-
version_requirements: *
|
58
|
+
version_requirements: *2151797880
|
60
59
|
- !ruby/object:Gem::Dependency
|
61
60
|
name: yajl-ruby
|
62
|
-
requirement: &
|
61
|
+
requirement: &2151821160 !ruby/object:Gem::Requirement
|
63
62
|
none: false
|
64
63
|
requirements:
|
65
64
|
- - ~>
|
@@ -67,10 +66,10 @@ dependencies:
|
|
67
66
|
version: 0.8.2
|
68
67
|
type: :runtime
|
69
68
|
prerelease: false
|
70
|
-
version_requirements: *
|
69
|
+
version_requirements: *2151821160
|
71
70
|
- !ruby/object:Gem::Dependency
|
72
71
|
name: rake
|
73
|
-
requirement: &
|
72
|
+
requirement: &2151838760 !ruby/object:Gem::Requirement
|
74
73
|
none: false
|
75
74
|
requirements:
|
76
75
|
- - ~>
|
@@ -78,10 +77,10 @@ dependencies:
|
|
78
77
|
version: 0.8.7
|
79
78
|
type: :development
|
80
79
|
prerelease: false
|
81
|
-
version_requirements: *
|
80
|
+
version_requirements: *2151838760
|
82
81
|
- !ruby/object:Gem::Dependency
|
83
82
|
name: rspec
|
84
|
-
requirement: &
|
83
|
+
requirement: &2151848480 !ruby/object:Gem::Requirement
|
85
84
|
none: false
|
86
85
|
requirements:
|
87
86
|
- - ~>
|
@@ -89,10 +88,10 @@ dependencies:
|
|
89
88
|
version: 2.6.0
|
90
89
|
type: :development
|
91
90
|
prerelease: false
|
92
|
-
version_requirements: *
|
91
|
+
version_requirements: *2151848480
|
93
92
|
- !ruby/object:Gem::Dependency
|
94
93
|
name: rocco
|
95
|
-
requirement: &
|
94
|
+
requirement: &2151858660 !ruby/object:Gem::Requirement
|
96
95
|
none: false
|
97
96
|
requirements:
|
98
97
|
- - ~>
|
@@ -100,7 +99,7 @@ dependencies:
|
|
100
99
|
version: '0.7'
|
101
100
|
type: :development
|
102
101
|
prerelease: false
|
103
|
-
version_requirements: *
|
102
|
+
version_requirements: *2151858660
|
104
103
|
description: Client for REST API with HATEOAS
|
105
104
|
email:
|
106
105
|
- joseph.halter@thetalentbox.com
|
@@ -111,6 +110,7 @@ extra_rdoc_files: []
|
|
111
110
|
files:
|
112
111
|
- .gitignore
|
113
112
|
- .rspec
|
113
|
+
- .travis.yml
|
114
114
|
- Gemfile
|
115
115
|
- LICENSE
|
116
116
|
- README.md
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- harpy.gemspec
|
119
119
|
- lib/harpy.rb
|
120
120
|
- lib/harpy/client.rb
|
121
|
+
- lib/harpy/collection.rb
|
121
122
|
- lib/harpy/entry_point.rb
|
122
123
|
- lib/harpy/resource.rb
|
123
124
|
- lib/harpy/version.rb
|
@@ -126,7 +127,6 @@ files:
|
|
126
127
|
- spec/harpy/resource_spec.rb
|
127
128
|
- spec/harpy_spec.rb
|
128
129
|
- spec/spec_helper.rb
|
129
|
-
has_rdoc: true
|
130
130
|
homepage: https://github.com/TalentBox/harpy
|
131
131
|
licenses: []
|
132
132
|
post_install_message:
|
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
149
|
rubyforge_project:
|
150
|
-
rubygems_version: 1.6
|
150
|
+
rubygems_version: 1.8.6
|
151
151
|
signing_key:
|
152
152
|
specification_version: 3
|
153
153
|
summary: Client for REST API
|