Class: Ramaze::Request
- Inherits:
-
Innate::Request
- Object
- Innate::Request
- Ramaze::Request
- Defined in:
- lib/ramaze/request.rb
Overview
The purpose of this class is to act as a simple wrapper for Rack::Request and provide some convinient methods for our own use.
Constant Summary
- INTERESTING_HTTP_VARIABLES =
(/USER|HOST|REQUEST|REMOTE|FORWARD|REFER|PATH|QUERY|VERSION|KEEP|CACHE/)
- REQUEST_STRING_FORMAT =
"#<%s params=%p cookies=%p env=%p>"
Instance Method Summary (collapse)
- - (Object) accept_charset(default = 'UTF-8')
-
- (Array) accept_language(string = env['HTTP_ACCEPT_LANGUAGE'])
(also: #locales)
Try to find out which languages the client would like to have and sort them by weight, (most wanted first).
-
- (Array) accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE'])
Transform the HTTP_ACCEPT_LANGUAGE header into an Array with:.
-
- (Object) http_variables
(also: #http_vars)
Interesting HTTP variables from env.
-
- (Object) method_missing(meth, *args)
you can access the original @request via this method_missing, first it tries to match your method with any of the HTTP parameters then, in case that fails, it will relay to @request.
-
- (Object) pretty_print(pp)
Pretty prints current action with parameters, cookies and enviroment variables.
-
- (Object) to_instance_variables(*args)
(also: #to_ivs)
Sets any arguments passed as @instance_variables for the current action.
- - (Object) to_s (also: #inspect)
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(meth, *args)
you can access the original @request via this method_missing, first it tries to match your method with any of the HTTP parameters then, in case that fails, it will relay to @request
12 13 14 15 16 |
# File 'lib/ramaze/request.rb', line 12 def method_missing meth, *args key = meth.to_s.upcase return env[key] if env.has_key?(key) super end |
Instance Method Details
- (Object) accept_charset(default = 'UTF-8')
37 38 39 40 41 |
# File 'lib/ramaze/request.rb', line 37 def accept_charset(default = 'UTF-8') return default unless charsets = env['HTTP_ACCEPT_CHARSET'] charset = charsets.split(',', 2).first charset == '*' ? default : charset end |
- (Array) accept_language(string = env['HTTP_ACCEPT_LANGUAGE']) Also known as: locales
Try to find out which languages the client would like to have and sort them by weight, (most wanted first).
Returns and array of locales from env[‘HTTP_ACCEPT_LANGUAGE]. e.g. ["fi", "en", "ja", "fr", "de", "es", "it", "nl", "sv"]
Usage:
request.accept_language # => ['en-us', 'en', 'de-at', 'de']
60 61 62 63 64 |
# File 'lib/ramaze/request.rb', line 60 def accept_language(string = env['HTTP_ACCEPT_LANGUAGE']) return [] unless string accept_language_with_weight(string).map{|lang, weight| lang } end |
- (Array) accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE'])
Transform the HTTP_ACCEPT_LANGUAGE header into an Array with:
[[lang, weight], [lang, weight], ...]
This algorithm was taken and improved from the locales library.
Usage:
request.accept_language_with_weight # => [["en-us", 1.0], ["en", 0.8], ["de-at", 0.5], ["de", 0.3]]
84 85 86 87 88 89 |
# File 'lib/ramaze/request.rb', line 84 def accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE']) string.to_s.gsub(/\s+/, '').split(','). map{|chunk| chunk.split(';q=', 2) }. map{|lang, weight| [lang, weight ? weight.to_f : 1.0] }. sort_by{|lang, weight| -weight } end |
- (Object) http_variables Also known as: http_vars
Interesting HTTP variables from env
95 96 97 |
# File 'lib/ramaze/request.rb', line 95 def http_variables env.reject{|key, value| key.to_s !~ INTERESTING_HTTP_VARIABLES } end |
- (Object) pretty_print(pp)
Pretty prints current action with parameters, cookies and enviroment variables.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/ramaze/request.rb', line 109 def pretty_print(pp) pp.object_group(self) do group = { 'params' => params, 'cookies' => , 'env' => http_variables } group.each do |name, hash| pp.breakable pp.text " @#{name}=" pp.nest(name.size + 3){ pp.pp_hash(hash) } end end end |
- (Object) to_instance_variables(*args) Also known as: to_ivs
Sets any arguments passed as @instance_variables for the current action.
Usage:
request.params # => {'name' => 'manveru', 'q' => 'google', 'lang' => 'de'} request.to_ivs(:name, :q) @q # => 'google' @name # => 'manveru' @lang # => nil
28 29 30 31 32 33 34 |
# File 'lib/ramaze/request.rb', line 28 def to_instance_variables(*args) instance = Current.action.instance args.each do |arg| next unless value = self[arg] instance.instance_variable_set("@#{arg}", value) end end |
- (Object) to_s Also known as: inspect
102 103 104 |
# File 'lib/ramaze/request.rb', line 102 def to_s REQUEST_STRING_FORMAT % [self.class, params, , http_variables] end |