lib/storyblok/client.rb in storyblok-2.0.5 vs lib/storyblok/client.rb in storyblok-2.0.6
- old
+ new
@@ -1,8 +1,9 @@
require_relative 'request'
require_relative 'links'
+require 'storyblok/richtext'
require 'rest-client'
require 'logger'
require 'base64'
require 'json'
@@ -13,20 +14,22 @@
api_url: 'api.storyblok.com',
api_version: 1,
logger: false,
log_level: Logger::INFO,
version: 'draft',
+ component_resolver: ->(component, data) { '' },
cache_version: Time.now.to_i,
- cache: nil,
+ cache: nil
}
attr_reader :configuration, :logger
# @param [Hash] given_configuration
# @option given_configuration [String] :token Required if oauth_token is not set
# @option given_configuration [String] :oauth_token Required if token is not set
# @option given_configuration [String] :api_url
+ # @option given_configuration [Proc] :component_resolver
# @option given_configuration [Number] :api_version
# @option given_configuration [false, ::Logger] :logger
# @option given_configuration [::Logger::DEBUG, ::Logger::INFO, ::Logger::WARN, ::Logger::ERROR] :log_level
def initialize(given_configuration = {})
@configuration = default_configuration.merge(given_configuration)
@@ -36,10 +39,12 @@
@rest_client = RestClient::Resource.new(base_url, :headers => {
:authorization => configuration[:oauth_token]
})
end
+ @renderer = Richtext::HtmlRenderer.new
+ @renderer.set_component_resolver(@configuration[:component_resolver])
setup_logger
end
# Dynamic cdn endpoint call
#
@@ -185,9 +190,27 @@
def flush
unless cache.nil?
cache.set('storyblok:' + configuration[:token] + ':version', Time.now.to_i.to_s)
end
+ end
+
+ # Returns html from richtext field data
+ #
+ # @param [Hash] :data
+ #
+ # @return [String]
+ def render data
+ @renderer.render(data)
+ end
+
+ # Sets component resolver
+ #
+ # @param [Proc] :component_resolver
+ #
+ # @return [nil]
+ def set_component_resolver component_resolver
+ @renderer.set_component_resolver(component_resolver)
end
private
def parse_result(res)