Module: RestfulObjects::ObjectBase
- Defined in:
- lib/restful_objects/domain_model/mixins/object_base.rb
Constant Summary collapse
- HTTP_OK =
200
Instance Attribute Summary collapse
-
#ro_title ⇒ Object
Returns the value of attribute ro_title.
Instance Method Summary collapse
- #decode_value(value, type) ⇒ Object
- #encode_value(value, type, property_name = '') ⇒ Object
- #get_self_link ⇒ Object
- #initialize ⇒ Object
- #ro_absolute_url ⇒ Object
- #ro_delete ⇒ Object
- #ro_deleted? ⇒ Boolean
- #ro_domain_model ⇒ Object
- #ro_domain_type ⇒ Object
- #ro_get_representation_response ⇒ Object
- #ro_instance_id ⇒ Object
- #ro_is_service? ⇒ Boolean
- #ro_relative_url ⇒ Object
Instance Attribute Details
#ro_title ⇒ Object
Returns the value of attribute ro_title.
2 3 4 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 2 def ro_title @ro_title end |
Instance Method Details
#decode_value(value, type) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 74 def decode_value(value, type) return nil if value.nil? case type when :string value.to_s when :int value.to_i when :bool if [true, 'true'].include?(value) true elsif [false, 'false'].include?(value) false else raise ArgumentError.new "invalid boolean value: #{value}" end when :decimal Float(value) when :date Date.parse(value) when :blob Base64.decode64(value) else raise "decode_value unsupported property type: #{type}" end end |
#encode_value(value, type, property_name = '') ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 50 def encode_value(value, type, property_name = '') return nil if value.nil? case type when :string value.to_s when :int value.to_i when :bool value.to_s when :decimal value.to_f when :date value.strftime('%Y-%m-%d') when :blob Base64.encode64(value).strip else if value.respond_to?(:ro_property_relation_representation, true) value.ro_property_relation_representation(property_name) else raise "encode_value unsupported property type: #{type}" end end end |
#get_self_link ⇒ Object
108 109 110 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 108 def get_self_link link_to(:self, ro_relative_url, :object) end |
#initialize ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 6 def initialize super @ro_deleted = false @ro_is_service = self.class.ancestors.include?(RestfulObjects::Service) @ro_title = "#{self.class.name} (#{object_id})" ro_domain_model.register_object(self) unless @ro_is_service ro_domain_type.collections.each_value do |collection| instance_variable_set("@#{collection.id}".to_sym, Array.new) end on_after_create if respond_to?(:on_after_create) end |
#ro_absolute_url ⇒ Object
104 105 106 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 104 def ro_absolute_url "#{ro_domain_model.base_url}#{ro_relative_url}" end |
#ro_delete ⇒ Object
35 36 37 38 39 40 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 35 def ro_delete on_before_delete if respond_to?(:on_before_delete) @ro_deleted = true on_after_delete if respond_to?(:on_after_delete) {}.to_json end |
#ro_deleted? ⇒ Boolean
42 43 44 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 42 def ro_deleted? @ro_deleted end |
#ro_domain_model ⇒ Object
19 20 21 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 19 def ro_domain_model RestfulObjects::DomainModel.current end |
#ro_domain_type ⇒ Object
23 24 25 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 23 def ro_domain_type @ro_domain_type ||= ro_domain_model.types[self.class.name] end |
#ro_get_representation_response ⇒ Object
46 47 48 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 46 def ro_get_representation_response [HTTP_OK, { 'Content-Type' => ro_content_type_for_object(ro_domain_type.id) }, ro_get_representation.to_json] end |
#ro_instance_id ⇒ Object
31 32 33 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 31 def ro_instance_id object_id end |
#ro_is_service? ⇒ Boolean
27 28 29 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 27 def ro_is_service? @ro_is_service end |
#ro_relative_url ⇒ Object
100 101 102 |
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 100 def ro_relative_url "/objects/#{self.class.name}/#{self.object_id}" end |