class RealSavvy::Resource

Attributes

document[R]
json[R]

Public Class Methods

new(json, document) click to toggle source
# File lib/real_savvy/resource.rb, line 8
def initialize(json, document)
  @json = json
  @document = document
end

Public Instance Methods

attributes() click to toggle source
# File lib/real_savvy/resource.rb, line 25
def attributes
  @attributes ||= RealSavvy::Attributes.new(json['attributes'] || {})
end
hash() click to toggle source
# File lib/real_savvy/resource.rb, line 13
def hash
  {id: id, type: type}.to_json.hash
end
id() click to toggle source
# File lib/real_savvy/resource.rb, line 17
def id
  json['id']
end
inspect() click to toggle source
# File lib/real_savvy/resource.rb, line 41
def inspect
  json.inspect
end
meta() click to toggle source
# File lib/real_savvy/resource.rb, line 33
def meta
  @meta ||= RealSavvy::Meta.new(json['meta'] || {})
end
relationships() click to toggle source
# File lib/real_savvy/resource.rb, line 37
def relationships
  self
end
type() click to toggle source
# File lib/real_savvy/resource.rb, line 21
def type
  json['type']
end

Private Instance Methods

build_relationship(relationship) click to toggle source
# File lib/real_savvy/resource.rb, line 60
def build_relationship(relationship)
  relationship_raw = json['relationships']&.[](relationship.to_s)&.[]('data')
  relationship_processed = ::RealSavvy::Document.process_resources(relationship_raw)
end
has_relationship(relationship) click to toggle source
# File lib/real_savvy/resource.rb, line 55
def has_relationship(relationship)
  possible_relation_ship = json['relationships']&.[](relationship.to_s)
  possible_relation_ship && possible_relation_ship.length > 0
end
load_relationship_with_lookup(relationship) click to toggle source
# File lib/real_savvy/resource.rb, line 65
def load_relationship_with_lookup(relationship)
  loaded_relationships[relationship] ||= begin
                                           relationship_object = build_relationship(relationship)
                                           if relationship_object.is_a?(Array)
                                             relationship_object.map { |resource| objects_lookup[resource.hash] || resource }
                                           else
                                             objects_lookup[relationship_object.hash] || relationship_object
                                           end
                                         end
end
loaded_relationships() click to toggle source
# File lib/real_savvy/resource.rb, line 51
def loaded_relationships
  @loaded_relationships ||= {}
end
method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/real_savvy/resource.rb, line 76
def method_missing(m, *args, &block)
  if has_relationship(m)
    load_relationship_with_lookup(m)
  else
    super
  end
end
objects_lookup() click to toggle source
# File lib/real_savvy/resource.rb, line 47
def objects_lookup
  document&.objects_lookup || {}
end