Sha256: 6c6a946e3dc548b0fd99449c42eb31d21a9a5bfb69410149b0b78ec67fe9dd80

Contents?: true

Size: 1.62 KB

Versions: 12

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true
class Rack::App::Endpoint::Config

  def to_hash
    error_handler
    endpoint_specific_middlewares
    request_path
    request_method
    defined_request_path
    @raw
  end

  def callable
    @raw[:callable]
  end

  def type
    case callable
    when ::Rack::App::Block
      :endpoint
    else
      :application
    end
  end

  def payload_builder
    @raw[:payload].parser_builder
  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 endpoint_specific_middlewares
    @raw[:endpoint_specific_middlewares] ||= []
  end

  def request_method
    @raw[:request_method] || raise('missing config: request_methods')
  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

12 entries across 12 versions & 1 rubygems

Version Path
rack-app-6.7.1 lib/rack/app/endpoint/config.rb
rack-app-6.7.0 lib/rack/app/endpoint/config.rb
rack-app-6.6.0 lib/rack/app/endpoint/config.rb
rack-app-6.5.0 lib/rack/app/endpoint/config.rb
rack-app-6.4.1 lib/rack/app/endpoint/config.rb
rack-app-6.4.0 lib/rack/app/endpoint/config.rb
rack-app-6.3.3 lib/rack/app/endpoint/config.rb
rack-app-6.3.2 lib/rack/app/endpoint/config.rb
rack-app-6.3.1 lib/rack/app/endpoint/config.rb
rack-app-6.3.0 lib/rack/app/endpoint/config.rb
rack-app-6.2.0 lib/rack/app/endpoint/config.rb
rack-app-6.1.0 lib/rack/app/endpoint/config.rb