class AsciidoctorExtensions::KrokiClient

Kroki client

Constants

SUPPORTED_HTTP_METHODS

Attributes

max_uri_length[R]
method[R]
server_url[R]

Public Class Methods

new(server_url, http_method, http_client, logger = ::Asciidoctor::LoggerManager.logger, max_uri_length = 4000) click to toggle source
# File lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb, line 326
def initialize(server_url, http_method, http_client, logger = ::Asciidoctor::LoggerManager.logger, max_uri_length = 4000)
  @server_url = server_url
  @max_uri_length = max_uri_length
  @http_client = http_client
  method = (http_method || 'adaptive').downcase
  if SUPPORTED_HTTP_METHODS.include?(method)
    @method = method
  else
    logger.warn "Invalid value '#{method}' for kroki-http-method attribute. The value must be either: 'get', 'post' or 'adaptive'. Proceeding using: 'adaptive'."
    @method = 'adaptive'
  end
end

Public Instance Methods

get_image(kroki_diagram, encoding) click to toggle source
# File lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb, line 343
def get_image(kroki_diagram, encoding)
  type = kroki_diagram.type
  format = kroki_diagram.format
  text = kroki_diagram.text
  if @method == 'adaptive' || @method == 'get'
    uri = kroki_diagram.get_diagram_uri(server_url)
    if uri.length > @max_uri_length
      # The request URI is longer than the max URI length.
      if @method == 'get'
        # The request might be rejected by the server with a 414 Request-URI Too Large.
        # Consider using the attribute kroki-http-method with the value 'adaptive'.
        @http_client.get(uri, encoding)
      else
        @http_client.post("#{@server_url}/#{type}/#{format}", text, encoding)
      end
    else
      @http_client.get(uri, encoding)
    end
  else
    @http_client.post("#{@server_url}/#{type}/#{format}", text, encoding)
  end
end
text_content(kroki_diagram) click to toggle source
# File lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb, line 339
def text_content(kroki_diagram)
  get_image(kroki_diagram, 'utf-8')
end