Module: RestfulObjects::ObjectProperties
- Defined in:
- lib/restful_objects/object_properties.rb
Instance Method Summary collapse
- #clear_property(property) ⇒ Object
- #get_property_as_json(property) ⇒ Object
- #get_property_value(property) ⇒ Object
- #properties_members ⇒ Object
- #property_type(property) ⇒ Object
- #put_property_as_json(property, json) ⇒ Object
- #set_property_value(property, value) ⇒ Object
Instance Method Details
#clear_property(property) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/restful_objects/object_properties.rb', line 57 def clear_property(property) raise "property not exists" if not rs_model.types[self.class.name].properties.include?(property) raise "read-only property" if rs_model.types[self.class.name].properties[property].read_only send("#{property}=".to_sym, nil) on_after_update if respond_to? :on_after_update get_property_as_json(property) end |
#get_property_as_json(property) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/restful_objects/object_properties.rb', line 20 def get_property_as_json(property) raise "Property not exists" if not rs_model.types[self.class.name].properties.include?(property) representation = { property => { 'value' => get_property_value(property), 'links' => [ link_to(:self, "/objects/#{self.class.name}/#{object_id}/properties/#{property}", :object_property), link_to(:up, "/objects/#{self.class.name}/#{object_id}", :object) ], 'extensions' => rs_model.types[self.class.name].properties[property]. } } if not rs_model.types[self.class.name].properties[property].read_only then representation[property]['links'].concat [ link_to(:modify, "/objects/#{self.class.name}/#{object_id}/properties/#{property}", :object_property, { property: property, method: 'PUT', arguments: { 'value' => nil } }), link_to(:clear, "/objects/#{self.class.name}/#{object_id}/properties/#{property}", :object_property, { property: property, method: 'DELETE'} ) ] else representation[property]['disabledReason'] = rs_model.types[self.class.name].properties[property].disabled_reason end representation.to_json end |
#get_property_value(property) ⇒ Object
70 71 72 |
# File 'lib/restful_objects/object_properties.rb', line 70 def get_property_value(property) encode_value(send(property.to_sym), property_type(property)) end |
#properties_members ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/restful_objects/object_properties.rb', line 3 def properties_members members = {} rs_type.properties.each do |name, property| members[name] = { 'memberType' => 'property', 'value' => get_property_value(name), 'links' => [ link_to(:details, "/objects/#{self.class.name}/#{object_id}/properties/#{name}", :object_property, property: name) ], 'extensions' => property. } members[name]['disabledReason'] = property.disabled_reason if property.read_only end members end |
#property_type(property) ⇒ Object
66 67 68 |
# File 'lib/restful_objects/object_properties.rb', line 66 def property_type(property) rs_model.types[self.class.name].properties[property].return_type end |
#put_property_as_json(property, json) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/restful_objects/object_properties.rb', line 47 def put_property_as_json(property, json) raise "property not exists" if not rs_model.types[self.class.name].properties.include?(property) raise "read-only property" if rs_model.types[self.class.name].properties[property].read_only value = JSON.parse(json)['value'] set_property_value(property, value) on_after_update if respond_to? :on_after_update get_property_as_json(property) end |
#set_property_value(property, value) ⇒ Object
74 75 76 |
# File 'lib/restful_objects/object_properties.rb', line 74 def set_property_value(property, value) send("#{property}=".to_sym, decode_value(value, property_type(property))) end |