Sha256: 1aea526b36367fa187bbf5ab81090155aadd07f152148deb930ad946976a0503

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

class Rack::App::Endpoint::Config

  def to_hash
    error_handler
    middleware_builders_blocks
    request_path
    request_method
    return @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_method
    (@raw[:request_method] || raise('missing request_method!')).to_s.upcase
  end

  def request_path
    Rack::App::Utils.normalize_path(@raw[:request_path] || raise('missing 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)
    return method_name
  end

  def logic_block
    @raw[:user_defined_logic]
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rack-app-5.10.2 lib/rack/app/endpoint/config.rb
rack-app-5.10.1 lib/rack/app/endpoint/config.rb
rack-app-5.10.0 lib/rack/app/endpoint/config.rb
rack-app-5.9.0 lib/rack/app/endpoint/config.rb
rack-app-5.8.0 lib/rack/app/endpoint/config.rb