Class: ApimaticCalculator::BaseModel

Inherits:
Object
  • Object
show all
Defined in:
lib/apimatic_calculator/models/base_model.rb

Overview

Base model.

Instance Method Summary collapse

Instance Method Details

#to_hashObject

Returns a Hash representation of the current object.



10
11
12
13
14
15
16
17
18
19
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
46
47
48
49
50
# File 'lib/apimatic_calculator/models/base_model.rb', line 10

def to_hash
  hash = {}
  instance_variables.each do |name|
    value = instance_variable_get(name)
    name = name[1..-1]
    key = self.class.names.key?(name) ? self.class.names[name] : name

    optional_fields = optionals if respond_to? 'optionals'
    nullable_fields = nullables if respond_to? 'nullables'
    if value.nil?
      next unless nullable_fields.include?(name)

      if !optional_fields.include?(name) && !nullable_fields.include?(name)
        raise ArgumentError,
              "`#{name}` cannot be nil in `#{self.class}`. Please specify a valid value."
      end
    end

    hash[key] = nil
    unless value.nil?
      if respond_to?("to_#{name}")
        if (value.instance_of? Array) || (value.instance_of? Hash)
          params = [hash, key]
          hash[key] = send("to_#{name}", *params)
        else
          hash[key] = send("to_#{name}")
        end
      elsif value.instance_of? Array
        hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
      elsif value.instance_of? Hash
        hash[key] = {}
        value.each do |k, v|
          hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
        end
      else
        hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
      end
    end
  end
  hash
end

#to_json(options = {}) ⇒ Object

Returns a JSON representation of the curent object.



53
54
55
56
# File 'lib/apimatic_calculator/models/base_model.rb', line 53

def to_json(options = {})
  hash = to_hash
  hash.to_json(options)
end