Module: Pdf4me::Serializer

Included in:
Base
Defined in:
lib/pdf4me/utils/serializer.rb

Instance Method Summary collapse

Instance Method Details

#_deserialize(type, value) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/pdf4me/utils/serializer.rb', line 26

def _deserialize(type, value)
  case type
    when 'String'
      value.to_s
    when 'DateTime'
      DateTime.parse(value)
    when 'Date'
      Date.parse(value)
    when 'Integer'
      value.to_i
    when 'BOOLEAN'
      value == 'true'
    when 'Float'
      value.to_f
    else
      Pdf4me.const_get(type).from_hash(value)
  end
end

#from_hash(attributes) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/pdf4me/utils/serializer.rb', line 9

def from_hash(attributes)
  model_attributes = {}

  self::ATTRIBUTES.stringify_keys.each do |key, type|
    hash_key = key.camelize(:lower)
    hash_value =  attributes[hash_key]

    if type =~ /\AArray<(.*)>/i
      model_attributes[key] = Array(hash_value).map { |value| _deserialize($1, value) }
    elsif !hash_value.nil?
      model_attributes[key] = _deserialize(type, hash_value)
    end
  end

  new(model_attributes)
end

#from_response(response) ⇒ Object



3
4
5
6
7
# File 'lib/pdf4me/utils/serializer.rb', line 3

def from_response(response)
  attributes = JSON.parse(response.body)
  return nil unless attributes.is_a?(Hash)
  from_hash(attributes)
end