/
request.rb
38 lines (30 loc) · 961 Bytes
/
request.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require "rack/request"
require Pathname(__FILE__).dirname + "session"
module Wheels
class Request < Rack::Request
attr_accessor :layout
attr_reader :application
def initialize(application, env)
raise ArgumentError.new("+env+ must be a Rack Environment Hash") unless env.is_a?(Hash)
@application = application
super(env)
end
def session
@session ||= Session.new(self)
end
def layout
defined?(@layout) ? @layout : application.default_layout
end
def request_method
@env['REQUEST_METHOD'] = self.POST['_method'].upcase if request_method_in_params?
@env['REQUEST_METHOD']
end
def environment
@env['APP_ENVIRONMENT'] || (@application ? @application.environment : "development")
end
private
def request_method_in_params?
@env["REQUEST_METHOD"] == "POST" && self.POST && %w(PUT DELETE).include?((self.POST['_method'] || "").upcase)
end
end
end