restful_objects 0.0.6 → 0.0.7

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: acc457412078eadbb0d83af84afa695eb3abea02
4
- data.tar.gz: 761377929fe4800901ee88b361cfe6b7e603a98e
3
+ metadata.gz: ab9347453b22d38c76c2ab4c8711d1c1bd825ea4
4
+ data.tar.gz: 85549e79dde2126e2871841d00d8ea64dfeced79
5
5
  SHA512:
6
- metadata.gz: 197315bdd45d57a1dea3ab04593561893106582eb5b7bdbd8da84116b4abc992dbb1ffc2390b568ceb12ddf5f5d5afd2d585ea578bebc16485ae4adcea9edf6d
7
- data.tar.gz: 8e73987857c84cababd5eaa857b67b38041d7f8691f9ae7826c09f5da2bd2d24065a4a3212af13860375d827cfac358d70b050405b109b0ef507f88378451243
6
+ metadata.gz: 935b685a0063195caa79387cb71c7cd51377c93de88dde3a285df92413a3c5289ef3586173d67da34a2e1ea41b840036de54e1a5f7bf90ea5b1efcb18703b3b7
7
+ data.tar.gz: d68969dfe27106b61abd847c742244e34160d498a1da0c44a6b0e34615aed0940edbd8c3cc3c53232e045f558384a285db4e15f44c10f32d80c712f17b516ee6
@@ -98,8 +98,9 @@ module RestfulObjects
98
98
  end
99
99
 
100
100
  def get_type_list_representation
101
- { 'links' => [link_to(:self, '/domain-types', :type_list), link_to(:up, '/', :homepage)],
102
- 'value' => @types.map { |name| link_to(:domain_type, "/domain-types/#{name}", :domain_type) }
101
+ {
102
+ 'value' => @types.each_value.map { |type| link_to(:domain_type, "/domain-types/#{type.id}", :domain_type) },
103
+ 'links' => [link_to(:self, '/domain-types', :type_list), link_to(:up, '/', :homepage)]
103
104
  }.to_json
104
105
  end
105
106
 
@@ -51,17 +51,19 @@ module RestfulObjects
51
51
 
52
52
  def representation(include_self_link = true)
53
53
  representation = {
54
+ 'instanceId' => object_id.to_s,
55
+ 'serviceId' => self.class.name,
54
56
  'title' => title,
55
57
  'members' => generate_members,
56
58
  'links' => [ link_to(:described_by, "/domain-types/#{self.class.name}", :domain_type) ],
57
59
  'extensions' => rs_type.metadata
58
60
  }
59
61
 
60
- if not is_service
61
- representation['instanceId'] = object_id.to_s
62
+ unless is_service
63
+ representation.delete('serviceId')
62
64
  representation['links'] << link_to(:self, "/objects/#{self.class.name}/#{object_id}", :object) if include_self_link
63
65
  else
64
- representation['serviceId'] = self.class.name
66
+ representation.delete('instanceId')
65
67
  representation['links'] << link_to(:self, "/services/#{self.class.name}", :object) if include_self_link
66
68
  end
67
69
 
@@ -103,14 +103,18 @@ module RestfulObjects
103
103
 
104
104
  def set_property_value(property, value)
105
105
  if property_description(property).is_reference
106
- href_value = value['href']
107
- match = Regexp.new(".*/objects/(?<domain-type>\\w*)/(?<object-id>\\d*)").match(href_value)
108
- raise "invalid property reference format: '#{href_value}'" if not match
109
- domain_type = match['domain-type']
110
- id = match['object-id'].to_i
111
- raise "value does not exists" if not rs_model.objects.include?(id)
112
- raise "domain-type does not exists" if not rs_model.types.include?(domain_type)
113
- send "#{property}=".to_sym, rs_model.objects[id]
106
+ unless value.nil?
107
+ href_value = value['href']
108
+ match = Regexp.new(".*/objects/(?<domain-type>\\w*)/(?<object-id>\\d*)").match(href_value)
109
+ raise "invalid property reference format: '#{href_value}'" if not match
110
+ domain_type = match['domain-type']
111
+ id = match['object-id'].to_i
112
+ raise "value does not exists" if not rs_model.objects.include?(id)
113
+ raise "domain-type does not exists" if not rs_model.types.include?(domain_type)
114
+ send "#{property}=".to_sym, rs_model.objects[id]
115
+ else
116
+ send "#{property}=".to_sym, nil
117
+ end
114
118
  else
115
119
  send "#{property}=".to_sym, decode_value(value, property_type(property))
116
120
  end
@@ -43,7 +43,7 @@ module RestfulObjects
43
43
  raise 'invalid return_type: object, proto_object or list key expected'
44
44
  end
45
45
  unless @result_type.is_a?(Class) or @result_type.is_a?(String)
46
- raise 'return_type object, proto_object or list value should be a class or a string'
46
+ raise 'return_type object, proto_object or list value should be a class or a string'
47
47
  end
48
48
  else
49
49
  raise 'invalid return_type: symbol or hash expected'
@@ -74,11 +74,13 @@ module RestfulObjects
74
74
  end
75
75
 
76
76
  def metadata
77
- result = { 'friendlyName' => friendly_name,
78
- 'description' => description,
79
- 'returnType' => result_type,
80
- 'hasParams' => has_params,
81
- 'memberOrder' => member_order }
77
+ {
78
+ 'friendlyName' => friendly_name,
79
+ 'description' => description,
80
+ 'returnType' => result_type,
81
+ 'hasParams' => has_params,
82
+ 'memberOrder' => member_order
83
+ }
82
84
  end
83
85
 
84
86
  def has_params
@@ -32,22 +32,19 @@ module RestfulObjects
32
32
  end
33
33
 
34
34
  def get_representation
35
- representation = {
36
- 'id' => @id,
37
- 'optional' => optional,
38
- 'memberOrder' => @member_order,
39
- 'links' => [
35
+ {
36
+ 'id' => @id,
37
+ 'friendlyName' => friendly_name || '',
38
+ 'description' => description || '',
39
+ 'optional' => optional,
40
+ 'memberOrder' => @member_order,
41
+ 'links' => [
40
42
  link_to(:self, "/domain-types/#{@domain_type}/properties/#{@id}", :property_description),
41
43
  link_to(:up, "/domain-types/#{@domain_type}", :domain_type),
42
44
  link_to(:return_type, "/domain-types/#{@return_type}", :domain_type)
43
45
  ],
44
46
  'extensions' => {}
45
- }
46
-
47
- representation['friendlyName'] = friendly_name if friendly_name
48
- representation['description'] = description if description
49
-
50
- representation.to_json
47
+ }.to_json
51
48
  end
52
49
 
53
50
  def metadata
@@ -4,7 +4,7 @@ module RestfulObjects
4
4
  def self.registered(router)
5
5
  # D.21 Domain Types
6
6
  router.get "/domain-types" do
7
- model.types.get_representation
7
+ model.get_type_list_representation
8
8
  end
9
9
 
10
10
  # D.22 Domain Type
@@ -1,3 +1,3 @@
1
1
  module RestfulObjects
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Vizcay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-31 00:00:00.000000000 Z
11
+ date: 2016-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler