Module: Frenetic::Related

Extended by:
StructureMethodDefiner
Included in:
Resource
Defined in:
lib/frenetic/concerns/related.rb

Instance Method Summary collapse

Methods included from StructureMethodDefiner

structure

Instance Method Details



15
16
17
18
19
20
21
22
# File 'lib/frenetic/concerns/related.rb', line 15

def extract_related_resources
  links.each do |k, attrs|
    next if k == 'self'
    Array.wrap(attrs).each do |relation|
      relations[k] = relation
    end
  end
end


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/frenetic/concerns/related.rb', line 24

def fetch_related_resource(relation, props)
  begin
    response = api.get(props['href'])
  rescue ClientParsingError, ClientError => ex
    raise if ex.status != 404
    raise ResourceNotFound.new(self, props)
  end
  return nil unless response.success?
  resource_class = self.class.find_resource_class(relation)
  if collection?(relation)
    self.class.extract_embedded_resources(response.body).fetch(relation, [])
  else
    resource_class.new(response.body)
  end
end