Class: Luo::Middleware::Base

Inherits:
Object
  • Object
show all
Extended by:
Dry::Configurable
Defined in:
lib/luo/middleware/base.rb

Direct Known Subclasses

Logger

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Base

Returns a new instance of Base.

Raises:

  • (ArgumentError)


7
8
9
10
# File 'lib/luo/middleware/base.rb', line 7

def initialize(app)
  raise ArgumentError, "app must respond to `call`" unless app.respond_to? :call
  @app = app
end

Class Method Details

.after(&block) ⇒ Object



49
50
51
# File 'lib/luo/middleware/base.rb', line 49

def after(&block)
  create_method :_after_call_, &block
end

.before(&block) ⇒ Object



45
46
47
# File 'lib/luo/middleware/base.rb', line 45

def before(&block)
  create_method :_before_call_, &block
end

.call(&block) ⇒ Object



53
54
55
# File 'lib/luo/middleware/base.rb', line 53

def call(&block)
  create_method :_call_, &block
end

.create_method(name, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/luo/middleware/base.rb', line 34

def create_method(name, &block)
  define_method name do |env|
    _env_ = block.call(env)
    if _env_.is_a? Env
      _env_
    else
      env
    end
  end
end

Instance Method Details

#_after_call_(env) ⇒ Object



24
25
26
# File 'lib/luo/middleware/base.rb', line 24

def _after_call_(env)
  env
end

#_before_call_(env) ⇒ Object



20
21
22
# File 'lib/luo/middleware/base.rb', line 20

def _before_call_(env)
  env
end

#_call_(env) ⇒ Object



28
29
30
# File 'lib/luo/middleware/base.rb', line 28

def _call_(env)
  env
end

#call(env) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/luo/middleware/base.rb', line 12

def call(env)
  env = Env.validate_env!(env)
  env = Env.validate_env! _before_call_(env)
  env = Env.validate_env! _call_(env)
  env = Env.validate_env! @app.call(env)
  Env.validate_env! _after_call_(env)
end