Sha256: 76bd6d40040f8c643fa61af1a42f8538b78c285d05421fb44d2461cba7c0e373
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
require 'cortex/snippets/webpage' require 'addressable/uri' module Cortex module Snippets class Client include ActionView::Helpers::TranslationHelper def initialize(cortex_client) @cortex_client = cortex_client end def snippet(request, options = {}, block) snippets = current_webpage(request).snippets || [] snippet = snippets.find { |snippet| snippet[:document][:name] == options[:id] } if snippet.nil? || snippet[:document][:body].nil? || snippet[:document][:body].empty? content_tag(:snippet, block, options) else content_tag(:snippet, snippet[:document][:body].html_safe, options) end end def current_webpage(request) if defined?(Rails) url = sanitized_webpage_url(request.original_url) Rails.cache.fetch("webpages/#{@cortex_client.access_token.client.id}/#{url}", race_condition_ttl: 10) do Cortex::Snippets::Webpage.new(@cortex_client, url) end else raise 'Your Web framework is not supported. Supported frameworks: Rails' end end private def sanitized_webpage_url(url) uri = Addressable::URI.parse(url) path = uri.path == '/' ? uri.path : uri.path.chomp('/') "#{uri.scheme}://#{uri.authority}#{path}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cortex-snippets-client-1.0.2 | lib/cortex/snippets/client.rb |