Class: AjpRailsRequest
- Inherits:
-
ActionController::AbstractRequest
- Object
- ActionController::AbstractRequest
- AjpRailsRequest
- Extended by:
- Forwardable
- Defined in:
- lib/ajp-rails/rails-wrapper.rb
Overview
Wraps Net::AJP13::Request to adapt it to request object in rails.
Defined Under Namespace
Modules: QueryExtension
Constant Summary collapse
- AJP_PACKET_EMBED_VARIABLES =
[ 'remote_addr', 'remote_host', 'server_name', 'server_port' ]
- DEFAULT_SESSION_OPTIONS =
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge('session_key' => 'JSESSIONID')
Instance Attribute Summary collapse
-
#env ⇒ Object
(also: #env_table)
readonly
CGI#env compatible interface for ActionController::AbstractRequest.
-
#session_options ⇒ Object
option values for session management.
Instance Method Summary collapse
- #host ⇒ Object
-
#initialize(ajp_request, session_options, server_environments) ⇒ AjpRailsRequest
constructor
ajp_request
- Net::AJP13::Request object to wrap
session_options
-
Options to manage sessions.
- Net::AJP13::Request object to wrap
-
#method ⇒ Object
HTTP method name as a Symbol.
- #path ⇒ Object
-
#port ⇒ Object
Overrides AbstractRequest’s one.
- #port_from_http_host ⇒ Object
-
#query_parameters ⇒ Object
Overrides blank implementation in AbstractRequest.
- #query_string ⇒ Object
- #raw_post ⇒ Object
-
#request_parameters ⇒ Object
Overrides blank implementation in AbstractRequest.
- #request_uri ⇒ Object
-
#reset_session ⇒ Object
Overrides blank implementation in AbstractRequest.
- #server_software ⇒ Object
-
#session ⇒ Object
Overrides blank implementation in AbstractRequest.
Constructor Details
#initialize(ajp_request, session_options, server_environments) ⇒ AjpRailsRequest
ajp_request
-
Net::AJP13::Request object to wrap
session_options
-
Options to manage sessions. It is compatible for CGI::SEssion.new’s options.
server_environments
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 123 def initialize(ajp_request, , server_environments) @req = ajp_request @session_options = @server_environments = server_environments @session_options['session_path'] ||= @server_environments['APP_LOCATION'] # simulates environment hash. @env = self.class.instance_method(:environment).bind(self) # Object#method is overridden by AbstractRequest#method class << @env def include?(key) !call(key).nil? end alias :key? :include? end extend QueryExtension initialize_query @cookies = nil end |
Instance Attribute Details
#env ⇒ Object (readonly) Also known as: env_table
CGI#env compatible interface for ActionController::AbstractRequest
166 167 168 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 166 def env @env end |
#session_options ⇒ Object
option values for session management. The interface is compatible for CGI::Session.new’s second argument
163 164 165 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 163 def @session_options end |
Instance Method Details
#host ⇒ Object
253 254 255 256 257 258 259 260 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 253 def host @req['x-forwarded-host'] || ($1 if @req.server_name and /\A(.*):\d+\Z/ =~ @req.server_name) || (@req.server_name and @req.server_name.split(':').first) || ($1 if @req['host'] and /\A(.*):\d+\Z/ =~ @req['host']) || (@req['host'] and @req['host'].split(':').first) || '' end |
#method ⇒ Object
HTTP method name as a Symbol
205 206 207 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 205 def method @req.method.downcase.to_sym end |
#path ⇒ Object
221 222 223 224 225 226 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 221 def path path = @req.path path = path.sub(%r!\A#{Regexp.escape(@server_environments['DISPATCHER_PREFIX'])}!, '') if @server_environments['DISPATCHER_PREFIX'] path = path.sub(%r!#{Regexp.escape(@server_environments['DISPATCHER_SUFFIX'])}\Z!, '') if @server_environments['DISPATCHER_SUFFIX'] path end |
#port ⇒ Object
Overrides AbstractRequest’s one
263 264 265 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 263 def port @req['x-forwarded-host'] ? standard_port : (port_from_http_host || @req.server_port) end |
#port_from_http_host ⇒ Object
267 268 269 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 267 def port_from_http_host $1.to_i if @req['host'] && /:(\d+)$/ =~ @req['host'] end |
#query_parameters ⇒ Object
Overrides blank implementation in AbstractRequest
240 241 242 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 240 def query_parameters (qs = self.query_string).blank? ? {} : CGIMethods.parse_query_parameters(qs) end |
#query_string ⇒ Object
196 197 198 199 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 196 def query_string val = @req.get_attributes('query_string') val and val[0] end |
#raw_post ⇒ Object
209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 209 def raw_post if @req.body @req.body elsif @req.body_stream stream = @req.body_stream @req.body_stream = nil @req.body = stream.read else '' end end |
#request_parameters ⇒ Object
Overrides blank implementation in AbstractRequest
245 246 247 248 249 250 251 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 245 def request_parameters if formatted_post? CGIMethods.parse_formatted_request_parameters(post_format, raw_post) else CGIMethods.parse_request_parameters(self.params) end end |
#request_uri ⇒ Object
228 229 230 231 232 233 234 235 236 237 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 228 def request_uri if @request_uri @request_uri else uri = path qs = query_string uri << '?' << qs[0] if qs @request_uri = uri end end |
#reset_session ⇒ Object
Overrides blank implementation in AbstractRequest
291 292 293 294 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 291 def reset_session @session.delete if CGI::Session === @session @session = new_session end |
#server_software ⇒ Object
191 192 193 194 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 191 def server_software val = @req.get_attributes('server_software') val and val[0] and /([A-Za-z]+)/ =~ val[0] and $1.downcase end |
#session ⇒ Object
Overrides blank implementation in AbstractRequest
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
# File 'lib/ajp-rails/rails-wrapper.rb', line 272 def session unless @session if @session_options == false @session = Hash.new else stale_session_check! do if ['new_session'] == true @session = new_session else @session = CGI::Session.new(@req, ) end @session['__valid_session'] end end end @session end |