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

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.
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