class Renderful::Client

Attributes

cache[R]
components[R]
provider[R]

Public Class Methods

new(provider:, components:, cache: Cache::Null.new) click to toggle source
# File lib/renderful/client.rb, line 7
def initialize(provider:, components:, cache: Cache::Null.new)
  @provider = provider
  @components = components
  @cache = cache
end

Public Instance Methods

invalidate_cache_from_webhook(body) click to toggle source
# File lib/renderful/client.rb, line 26
def invalidate_cache_from_webhook(body)
  result = provider.cache_keys_to_invalidate(body)

  cache.delete(*result[:keys]) if result[:keys].any?

  result[:patterns].each do |pattern|
    cache.delete_matched(pattern)
  end
end
render(entry_id, options = {}) click to toggle source
# File lib/renderful/client.rb, line 13
def render(entry_id, options = {})
  cache.fetch(ContentEntry.build_cache_key(provider, id: entry_id)) do
    content_entry = provider.find_entry(entry_id)
    component = component_for_entry(content_entry)

    if component.respond_to?(:render_in)
      component.render_in(options.fetch(:view_context))
    else
      component.render
    end
  end
end

Private Instance Methods

component_for_entry(content_entry) click to toggle source
# File lib/renderful/client.rb, line 42
def component_for_entry(content_entry)
  component_klass_for_entry(content_entry).new(entry: content_entry, client: self)
end
component_klass_for_entry(content_entry) click to toggle source
# File lib/renderful/client.rb, line 38
def component_klass_for_entry(content_entry)
  components[content_entry.content_type] || fail(Error::NoComponentError, content_entry)
end