class Materialist::Materializer::Internals::LinkMapping

Attributes

mapping[R]

Public Class Methods

new(key:, mapping: [], enable_caching: false) click to toggle source
# File lib/materialist/materializer/internals/link_mapping.rb, line 5
def initialize(key:, mapping: [], enable_caching: false)
  @key = key
  @mapping = mapping
  @enable_caching = enable_caching
end

Public Instance Methods

linked_resource(resource) click to toggle source
# File lib/materialist/materializer/internals/link_mapping.rb, line 18
def linked_resource(resource)
  return unless href = resource.dig(:_links, @key, :href)
  resource.client.get(href, options: { enable_caching: @enable_caching, response_class: HateoasResource })
rescue Routemaster::Errors::ResourceNotFound
  nil
end
map(resource) click to toggle source
# File lib/materialist/materializer/internals/link_mapping.rb, line 13
def map(resource)
  return unless linked_resource = linked_resource(resource)
  mapping.map{ |m| m.map(linked_resource) }.compact.reduce(&:merge)
end