json_roa-client 0.0.1 → 1.0.0.pre.beta.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4d7651511267f0efcb676968189e34177b9f6d2
4
- data.tar.gz: d4e9af5a21128239ab328f7e067c2e4d95c069d6
3
+ metadata.gz: cdb807bb844107ea3e10f62f2abb7e779cec235a
4
+ data.tar.gz: 0c7ca17cf23edd53294942f1d3b4ab159b8c161c
5
5
  SHA512:
6
- metadata.gz: fea1c51ea58d00a4d1f463c8b27305ebcebce2dd3ce5b4b50a67b17c69e48f43d0eedae98d384882fb2d1fc822c78d5926049f6d354feeb895a21a8e78c8b20c
7
- data.tar.gz: ac5ec164e6903eef845ea64a42b454ea775deaf94a0cd2da8fb0b35017e05d9d83d63d8abad2d2627c077210b4aaea1da607687db5df2cf1d5e121edb72b28bc
6
+ metadata.gz: 8d86b3da965f3688cc2d7d9b44a96b5b98c309266c2d9b34f3ad796d4261e5325ea4ac7d667873f56bc6e6c71daed46e68902fecee7b2ec829a919fe3df7a3c9
7
+ data.tar.gz: 7bbbe259b42137273fd758374cbe72dfebe8056339b981bcb2a3aec61eea5f6a23c89952cfd63525ae6ecf09ebbe3716ea4325dbc65afdc4b5d745775f1b16ba
@@ -10,16 +10,23 @@ module JSON_ROA
10
10
  end
11
11
 
12
12
  def each &block
13
- relations= @resource.response.env \
14
- .json_roa_data['collection']['relations'] rescue []
15
- relations.each do |key, data|
16
- yield Relation.new(@conn,key,data) if block_given?
17
- end
18
13
 
19
- next_val= @resource.response \
20
- .env.json_roa_data['collection']['next'] rescue nil
21
- if next_val
22
- Relation.new(@conn,"next",next_val).get().collection.each(&block)
14
+ while true do
15
+
16
+ relations= @resource.json_roa_data['collection']['relations'] rescue []
17
+
18
+ relations.each do |key, data|
19
+ yield Relation.new(@conn,key,data) if block_given?
20
+ end
21
+
22
+ next_val= @resource.json_roa_data['collection']['next'] rescue nil
23
+
24
+ if relations.empty? or (not next_val)
25
+ break
26
+ else
27
+ @resource= Relation.new(@conn,"next",next_val).get()
28
+ end
29
+
23
30
  end
24
31
 
25
32
  end
@@ -6,6 +6,8 @@ module JSON_ROA
6
6
 
7
7
  class Relation
8
8
 
9
+ SUPPORTED_METHODS= %w(get put post delete)
10
+
9
11
  attr_reader :data
10
12
  attr_reader :key
11
13
 
@@ -15,16 +17,25 @@ module JSON_ROA
15
17
  @data= data
16
18
  end
17
19
 
18
- def get query_parameters= {}
20
+ def run_request method, query_parameters, body, headers, &block
21
+ unless available_methods.keys.include? method
22
+ raise ArgumentError, "method: #{method} is not supported by this relation"
23
+ end
19
24
  href= @data['href']
20
25
  template= ::Addressable::Template.new(href)
21
- expanded= template.expand(query_parameters)
22
- response=@conn.get(expanded)
26
+ expanded_url= template.expand(query_parameters)
27
+ response=@conn.run_request method.to_sym, expanded_url, body, headers, &block
23
28
  ::JSON_ROA::Client::Resource.new(@conn,response)
24
29
  end
25
30
 
26
- def methods
27
- @data['methods']
31
+ SUPPORTED_METHODS.each do |method_name|
32
+ define_method method_name do |query_parameters={}, body=nil, headers=nil, &block|
33
+ run_request method_name, query_parameters, body, headers, &block
34
+ end
35
+ end
36
+
37
+ def available_methods
38
+ @data['methods'] ||= {"get" => {}}
28
39
  end
29
40
 
30
41
  end
@@ -18,10 +18,6 @@ module JSON_ROA
18
18
  ::JSON_ROA::Client::Relation.new @conn, key, relhash
19
19
  end
20
20
 
21
- def relations_data
22
- @response.env.json_roa_data['relations']
23
- end
24
-
25
21
  def data
26
22
  @response.body
27
23
  end
@@ -1,5 +1,5 @@
1
1
  module JSON_ROA
2
2
  module Client
3
- VERSION = "0.0.1"
3
+ VERSION = "1.0.0-beta.0"
4
4
  end
5
5
  end
@@ -33,7 +33,7 @@ module JSON_ROA
33
33
 
34
34
  yield @conn if block_given?
35
35
 
36
- Resource.new @conn
36
+ Relation.new @conn, "root", {"href" => url}
37
37
 
38
38
  end
39
39
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_roa-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0.pre.beta.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Schank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-19 00:00:00.000000000 Z
11
+ date: 2014-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -127,9 +127,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ">="
130
+ - - ">"
131
131
  - !ruby/object:Gem::Version
132
- version: '0'
132
+ version: 1.3.1
133
133
  requirements: []
134
134
  rubyforge_project:
135
135
  rubygems_version: 2.2.2