Class: ActionController::AbstractRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/action_controller/request.rb

Overview

These methods are available in both the production and test Request objects.

Direct Known Subclasses

CgiRequest, TestRequest

Instance Method Summary collapse

Instance Method Details

#cookiesObject



111
112
# File 'lib/action_controller/request.rb', line 111

def cookies
end

#delete?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/action_controller/request.rb', line 25

def delete?
  method == :delete
end

#domain(tld_length = 1) ⇒ Object

Returns the domain part of a host, such as rubyonrails.org in “www.rubyonrails.org”. You can specify a different tld_length, such as 2 to catch rubyonrails.co.uk in “www.rubyonrails.co.uk”.



55
56
57
# File 'lib/action_controller/request.rb', line 55

def domain(tld_length = 1)
  host.split(".").last(1 + tld_length).join(".")
end

#envObject



105
106
# File 'lib/action_controller/request.rb', line 105

def env
end

#get?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/action_controller/request.rb', line 13

def get?
  method == :get
end

#head?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/action_controller/request.rb', line 29

def head?
  method == :head
end

#hostObject



108
109
# File 'lib/action_controller/request.rb', line 108

def host
end

#host_with_portObject



92
93
94
# File 'lib/action_controller/request.rb', line 92

def host_with_port
  env['HTTP_HOST'] || host + port_string
end

#methodObject



9
10
11
# File 'lib/action_controller/request.rb', line 9

def method
  env['REQUEST_METHOD'].downcase.intern
end

#parametersObject

Returns both GET and POST parameters in a single hash.



5
6
7
# File 'lib/action_controller/request.rb', line 5

def parameters
  @parameters ||= request_parameters.update(query_parameters)
end

#pathObject



79
80
81
# File 'lib/action_controller/request.rb', line 79

def path
  request_uri ? request_uri.split("?").first : ""
end

#portObject



83
84
85
# File 'lib/action_controller/request.rb', line 83

def port
  env["SERVER_PORT"].to_i
end

#port_stringObject

Returns a string like “:8080” if the port is not 80 or 443 while on https.



88
89
90
# File 'lib/action_controller/request.rb', line 88

def port_string
  (protocol == "http://" && port == 80) || (protocol == "https://" && port == 443) ? "" : ":#{port}"
end

#post?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/action_controller/request.rb', line 17

def post?
  method == :post
end

#protocolObject



71
72
73
# File 'lib/action_controller/request.rb', line 71

def protocol
  port == 443 ? "https://" : "http://"
end

#put?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/action_controller/request.rb', line 21

def put?
  method == :put
end

#query_parametersObject

– Must be implemented in the concrete request ++



99
100
# File 'lib/action_controller/request.rb', line 99

def query_parameters
end

#remote_ipObject

Determine originating IP address. REMOTE_ADDR is the standard but will fail if the user is behind a proxy. HTTP_CLIENT_IP and/or HTTP_X_FORWARDED_FOR are set by proxies so check for these before falling back to REMOTE_ADDR. HTTP_X_FORWARDED_FOR may be a comma- delimited list in the case of multiple chained proxies; the first is the originating IP.



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/action_controller/request.rb', line 39

def remote_ip
  return env['HTTP_CLIENT_IP'] if env.include? 'HTTP_CLIENT_IP'

  if env.include? 'HTTP_X_FORWARDED_FOR' then
    remote_ips = env['HTTP_X_FORWARDED_FOR'].split(',').reject do |ip|
        ip =~ /^unknown$|^(10|172\.16|192\.168)\./i
    end

    return remote_ips.first.strip unless remote_ips.empty?
  end

  return env['REMOTE_ADDR']
end

#request_parametersObject



102
103
# File 'lib/action_controller/request.rb', line 102

def request_parameters
end

#request_uriObject



67
68
69
# File 'lib/action_controller/request.rb', line 67

def request_uri
  env["REQUEST_URI"]
end

#reset_sessionObject



117
118
# File 'lib/action_controller/request.rb', line 117

def reset_session
end

#sessionObject



114
115
# File 'lib/action_controller/request.rb', line 114

def session
end

#ssl?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/action_controller/request.rb', line 75

def ssl?
  protocol == "https://"
end

#subdomains(tld_length = 1) ⇒ Object

Returns all the subdomains as an array, so [“dev”, “www”] would be returned for “dev.www.rubyonrails.org”. You can specify a different tld_length, such as 2 to catch [“www”] instead of [“www”, “rubyonrails”] in “www.rubyonrails.co.uk”.



62
63
64
65
# File 'lib/action_controller/request.rb', line 62

def subdomains(tld_length = 1)
  parts = host.split(".")
  parts - parts.last(1 + tld_length)
end