Method: EasyApi::Object#initialize
- Defined in:
- lib/easy_api/object.rb
#initialize(data) ⇒ Object
Returns a new instance of Object.
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 |
# File 'lib/easy_api/object.rb', line 14 def initialize(data) raise EasyApi::MissingRequiredAttributeError unless required_attribute_names.all? do |name| data.keys.include?(name) || data.keys.include?(name.to_s) end raise EasyApi::UnknownAttributeError if data.keys.any? do |key| !attribute_names.include?(key) && !attribute_names.include?(key.to_sym) end @attributes = data.map do |k, v| [k.to_sym, v] end.map do |k, v| next [k, v] unless v.instance_of? Hash v = if object_class = schema[k] object_class.new(v) else OpenStruct.new(v) end [k, v] end.to_h @attributes = empty_optional_attributes.merge(@attributes) end |