Sha256: 864669a34cea0a75b437dc467e164ecfc6002841f94cb9e4bd2a29ebcf22fe9c

Contents?: true

Size: 1.32 KB

Versions: 104

Compression:

Stored size: 1.32 KB

Contents

# All roads lead here
#
# 1. AWS Lambda: PostsController - Rack::Adapter - Jets.application.call
# 2. Local server:  config.ru - run Jet.application - Jets.application.call
#
# Then eventually:
#
#   Jets.application.call - Middleware stack - Jets::Controller::Middleware::Main
#
module Jets::Controller::Middleware
  class Main
    def initialize(env)
      @env = env
      @controller = env['jets.controller']
      @event = env['lambda.event']
      @context = env['lambda.context']
      @meth = env['lambda.meth']
    end

    def call
      dup.call!
    end

    def call!
      setup
      @controller.dispatch! # Returns triplet
    end

    # Common setup logical at this point of middleware processing right before
    # calling any controller actions.
    def setup
      # We already recreated a mimicke rack env earlier as part of the very first
      # middleware layer. However, by the time the rack env reaches the main middleware
      # it could had been updated by other middlewares. We update the env here again.
      @controller.request.set_env!(@env)
      # This allows sesison helpers to work. Sessions are managed by
      # the Rack::Session::Cookie middleware by default.
      @controller.session = @env['rack.session'] || {}
    end

    def self.call(env)
      instance = new(env)
      instance.call
    end
  end
end

Version data entries

104 entries across 104 versions & 3 rubygems

Version Path
jets-1.4.5 lib/jets/controller/middleware/main.rb
jets-1.4.4 lib/jets/controller/middleware/main.rb
jets-1.4.3 lib/jets/controller/middleware/main.rb
jets-1.4.2 lib/jets/controller/middleware/main.rb
jets-1.4.1 lib/jets/controller/middleware/main.rb
jets-1.4.0 lib/jets/controller/middleware/main.rb
jets-1.3.9 lib/jets/controller/middleware/main.rb
jets-1.3.8 lib/jets/controller/middleware/main.rb
jets-1.3.7 lib/jets/controller/middleware/main.rb
jets-1.3.6 lib/jets/controller/middleware/main.rb
jets-1.3.5 lib/jets/controller/middleware/main.rb
jets-1.3.4 lib/jets/controller/middleware/main.rb
jets-1.3.3 lib/jets/controller/middleware/main.rb
jets-1.3.2 lib/jets/controller/middleware/main.rb
jets-1.3.1 lib/jets/controller/middleware/main.rb
jets-1.3.0 lib/jets/controller/middleware/main.rb
jets-1.2.1 lib/jets/controller/middleware/main.rb
jets-1.2.0 lib/jets/controller/middleware/main.rb
jets-1.1.5 lib/jets/controller/middleware/main.rb
jets-1.1.4 lib/jets/controller/middleware/main.rb