Class: Namira::Stack

Inherits:
Object
  • Object
show all
Defined in:
lib/namira/stack.rb

Overview

The middleware stack used to send a request

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Stack

Returns a new instance of Stack.



22
23
24
25
# File 'lib/namira/stack.rb', line 22

def initialize(&block)
  @middleware = []
  instance_eval(&block)
end

Class Method Details

.defaultObject

The default middleware stack



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/namira/stack.rb', line 8

def default
  Stack.new do
    use Middleware::Config
    use Middleware::Header
    use Middleware::Timing
    use Middleware::Redirector
    use Middleware::Logger
    use Middleware::Timeout
    use Middleware::Network
    use Middleware::Responder
  end
end

Instance Method Details

#call(env) ⇒ Object

Called by the middleware runner.

Parameters:

Raises:

  • (ArgumentError)


31
32
33
34
# File 'lib/namira/stack.rb', line 31

def call(env)
  raise ArgumentError, 'Invalid environment' unless env.is_a?(Namira::Env)
  to_app.call(env)
end

#use(klass, *args, &block) ⇒ Object

Add a class to the middleware stack

Parameters:

  • klass (Class, #call)

    The middleware class

  • args (Any)

    Arguments passed to the class initializer

  • block (Block)

    A block to pass to the class initializer



42
43
44
45
46
# File 'lib/namira/stack.rb', line 42

def use(klass, *args, &block)
  @middleware << lambda do |app|
    klass.new(app, *args, &block)
  end
end