Sha256: fb692db19c46ae1a390ac1056c08bc8f95b492a1617e0a4b267ac2aac6f44217

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true
class Rack::App::Endpoint::Config
  def to_hash
    error_handler
    middleware_builders_blocks
    request_path
    request_methods
    defined_request_path
    @raw
  end

  def payload_builder
    @raw[:payload].parser_builder
  end

  def application
    @raw[:application]
  end

  def app_class
    @raw[:app_class] || raise('missing app class')
  end

  def serializer
    serializer_builder.to_serializer
  end

  def payload
    app_class.__send__(:payload)
  end

  def payload_parser
    payload.parser.to_parser
  end

  def serializer_builder
    @raw[:serializer_builder] ||= app_class.__send__(:formats)
  end

  def error_handler
    @raw[:error_handler] ||= Rack::App::ErrorHandler.new
  end

  def middleware_builders_blocks
    @raw[:middleware_builders_blocks] ||= []
  end

  def endpoint_method_name
    @raw[:method_name] ||= register_method_to_app_class
  end

  def request_methods
    case @raw[:request_methods] || raise('missing config: request_methods')
    when Rack::App::Constants::HTTP::METHOD::ANY
      Rack::App::Constants::HTTP::METHODS
    when ::Array
      @raw[:request_methods].map(&:to_sym)
    else
      [@raw[:request_methods]].flatten.map(&:to_sym)
    end
  end

  def request_path
    Rack::App::Utils.normalize_path(@raw[:request_path] || raise('missing request_path!'))
  end

  def defined_request_path
    Rack::App::Utils.normalize_path(@raw[:defined_request_path] ||= request_path)
  end

  def description
    @raw[:route][:description] || @raw[:route][:desc]
  rescue
    nil
  end

  protected

  def initialize(raw)
    @raw = raw
  end

  def register_method_to_app_class
    method_name = '__' + ::Rack::App::Utils.uuid
    app_class.__send__(:define_method, method_name, &logic_block)
    method_name
  end

  def logic_block
    @raw[:user_defined_logic]
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rack-app-5.12.0 lib/rack/app/endpoint/config.rb
rack-app-5.11.1 lib/rack/app/endpoint/config.rb
rack-app-5.11.0 lib/rack/app/endpoint/config.rb