Module: RestfulObjects::ObjectBase

Defined in:
lib/restful_objects/domain_model/mixins/object_base.rb

Constant Summary collapse

HTTP_OK =
200

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#ro_titleObject

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


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

#initializeObject



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_urlObject



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_deleteObject



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

Returns:

  • (Boolean)


42
43
44
# File 'lib/restful_objects/domain_model/mixins/object_base.rb', line 42

def ro_deleted?
  @ro_deleted
end

#ro_domain_modelObject



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_typeObject



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_responseObject



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_idObject



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

Returns:

  • (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_urlObject



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