Sha256: 3fb141d198ab4147be17992afa40ab3c44b59b28faf8d2bf4c27c9916a6566c4
Contents?: true
Size: 1.02 KB
Versions: 16
Compression:
Stored size: 1.02 KB
Contents
require 'routemaster/api_client' require_relative './errors' module Materialist module MaterializedRecord def self.included(base) base.extend ClassMethods end module ClassMethods def source_link_reader(*keys, via: nil, allow_nil: false) keys.each do |key| define_method(key) do (via ? [via, key] : [key]) .inject(source_raw) do |res, path| begin (res && res.body._links.include?(path)) ? res.send(path).show : (allow_nil ? nil : raise(ResourceNotFound)) rescue Routemaster::Errors::ResourceNotFound (allow_nil ? nil : raise(ResourceNotFound)) end end &.body end end end end def source source_raw.body end private def source_raw Routemaster::APIClient.new( response_class: Routemaster::Responses::HateoasResponse ).get(source_url) end end end
Version data entries
16 entries across 16 versions & 1 rubygems