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