lib/jets/controller/request.rb in jets-4.0.12 vs lib/jets/controller/request.rb in jets-5.0.0.beta1

- old
+ new

@@ -1,29 +1,46 @@ require 'rack/request' -class Jets::Controller - class Request < ::Rack::Request - def initialize(event, context) - @event, @context = event, context - super(env) +module Jets::Controller + class Request + include Rack::Request::Helpers + include Compat::Request + include Compat::Params + + include ActionDispatch::Flash::RequestMethods + include ActionDispatch::Http::Cache::Request + include ActionDispatch::Http::MimeNegotiation + include ActionDispatch::Http::FilterParameters # parameter_filter and filtered_parameters + include ActionDispatch::Http::URL + include ActionDispatch::RequestCookieMethods + include ActionDispatch::ContentSecurityPolicy::Request + include ActionDispatch::PermissionsPolicy::Request + include Rack::Request::Env + + # since jets delegates parameter_filter from controller to request + public :parameter_filter + + attr_reader :event, :env + attr_accessor :routes + def initialize(rack_env: nil, event: nil) + @rack_env = rack_env + @event = event + @env = normalize_env + super(@env) # Rack::Env module => super() end - def env - @env ||= Jets::Controller::Rack::Env.new(@event, @context).convert # convert to Rack env + def normalize_env + if @rack_env # already rack env + @rack_env # rack_env is from Controller.action => lambda { |env| .. } + else + Jets::Controller::RackAdapter::Env.new(@event, {}).convert # convert to Rack env + end end - # When request hits the middleware Controller::Rack::Middleware::Main endpoint - # We set the it with the updated env since it could had been mutated down the - # middleware stack. + # When request hits the middleware Controller::RackAdapter::Middleware::Main endpoint + # We updated env since it could had been mutated down the middleware stack + # from Mimic to Main. def set_env!(env) @env = env - end - - # API Gateway is inconsistent about how it cases it keys. - # Sometimes it is "x-requested-with" vs "X-Requested-With" - # Normalize it with downcase. - def headers - headers = @event["headers"] || {} - headers.transform_keys { |key| key.downcase } end end end