class ElasticWeb::Resource
Attributes
data[R]
message[R]
refs[R]
status[R]
Public Class Methods
new(original_data)
click to toggle source
# File lib/elasticweb/resource.rb, line 5 def initialize(original_data) @status = original_data.dig(:status) @message = original_data.dig(:message) original_data = {} unless original_data.dig(:data).is_a?(Hash) references = original_data.delete(:references) refs_collection = parse_references(references) @refs = refs_collection.present? ? OpenStruct.new(refs_collection) : nil data = original_data.dig(:data) @data = OpenStruct.new(data.with_indifferent_access) end
Public Instance Methods
method_missing(method_sym, *arguments, &block)
click to toggle source
Calls superclass method
# File lib/elasticweb/resource.rb, line 28 def method_missing(method_sym, *arguments, &block) if @data.respond_to?(method_sym) @data.send(method_sym) else super end end
parse_references(references)
click to toggle source
# File lib/elasticweb/resource.rb, line 19 def parse_references(references) (references || {}).each_with_object({}) do |(reference, value), result| case value when Hash then result[reference] = Relation.new(value) when Array then result[reference] = RelationCollection.new(value) end end end