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)