class Apiphobic::Resource::Model

Constants

DEFAULT_PROCESSORS

Attributes

id[RW]
parameters[RW]
processors[R]
resource[RW]

Public Class Methods

new(resource:, id:, parameters:, **options) click to toggle source
# File lib/apiphobic/resource/model.rb, line 30
def initialize(resource:, id:, parameters:, **options)
  self.id         = id
  self.resource   = resource
  self.parameters = parameters.dup
  self.processors = options.fetch(:processors, self.class::DEFAULT_PROCESSORS)
end

Public Instance Methods

meta() click to toggle source
# File lib/apiphobic/resource/model.rb, line 49
def meta
  @meta ||= processors.inject({}) do |metadata, processor|
    metadata.merge processor.meta(processed, parameters)
  end
end
processed() click to toggle source
# File lib/apiphobic/resource/model.rb, line 37
def processed
  @processed ||= begin
    processed  = processors.inject(resource) do |processed_resource, processor|
      processor.processed(processed_resource, parameters)
    end

    return processed if instance_of?(::Apiphobic::Resource::Collection)

    processed.find_by(id: id) || processed.new
  end
end
processors=(other) click to toggle source
# File lib/apiphobic/resource/model.rb, line 55
def processors=(other)
  @processors = other.map do |processor|
    Object.const_get("::Apiphobic::Resource::Processors::#{processor.capitalize}")
  end
end