Class: Doze::Serialization::Entity

Inherits:
Entity
  • Object
show all
Defined in:
lib/doze/serialization/entity.rb

Direct Known Subclasses

MultipartFormData, WWWFormEncoded

Defined Under Namespace

Classes: MultipartFormData, WWWFormEncoded

Constant Summary

Constants inherited from Entity

Entity::DEFAULT_TEXT_ENCODING

Instance Attribute Summary

Attributes inherited from Entity

#binary_data_length, #encoding, #extra_content_headers, #language, #media_type, #media_type_params

Instance Method Summary collapse

Methods inherited from Entity

#binary_data_stream, #etag

Constructor Details

#initialize(media_type, options = {}, &lazy_object_data) ⇒ Entity

Returns a new instance of Entity.



5
6
7
8
9
# File 'lib/doze/serialization/entity.rb', line 5

def initialize(media_type, options={}, &lazy_object_data)
  super(media_type, options, &nil)  # ruby quirk: blocks are implicitely passed to super
  @object_data = options[:object_data]
  @lazy_object_data = lazy_object_data || options[:lazy_object_data]
end

Instance Method Details

#binary_data(try_serialize = true) ⇒ Object



20
21
22
23
24
# File 'lib/doze/serialization/entity.rb', line 20

def binary_data(try_serialize=true)
  super() || if try_serialize
    @binary_data = serialize(object_data(false))
  end
end

#deserialize(binary_data) ⇒ Object



30
31
32
# File 'lib/doze/serialization/entity.rb', line 30

def deserialize(binary_data)
  raise 'deserialize: not supported'
end

#object_data(try_deserialize = true) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/doze/serialization/entity.rb', line 11

def object_data(try_deserialize=true)
  @object_data ||= if @lazy_object_data
    @lazy_object_data.call
  elsif try_deserialize
    data = binary_data(false)
    data && deserialize(data)
  end
end

#serialize(object_data) ⇒ Object



26
27
28
# File 'lib/doze/serialization/entity.rb', line 26

def serialize(object_data)
  raise 'serialize: not supported'
end