Module Rack::Utils
In: lib/rack/utils.rb

Rack::Utils contains a grab-bag of useful methods for writing web applications adopted from all kinds of Ruby libraries.

Methods

Classes and Modules

Module Rack::Utils::Multipart
Class Rack::Utils::Context
Class Rack::Utils::HeaderHash

Constants

HTTP_STATUS_CODES = { 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Moved Temporarily', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported'   Every standard HTTP code mapped to the appropriate message. Stolen from Mongrel.

Public Instance methods

Performs URI escaping so that you can construct proper query strings faster. Use this rather than the cgi.rb version since it‘s faster. (Stolen from Camping).

[Source]

    # File lib/rack/utils.rb, line 11
11:     def escape(s)
12:       s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
13:         '%'+$1.unpack('H2'*$1.size).join('%').upcase
14:       }.tr(' ', '+')
15:     end

Escape ampersands, brackets and quotes to their HTML/XML entities.

[Source]

    # File lib/rack/utils.rb, line 52
52:     def escape_html(string)
53:       string.to_s.gsub("&", "&").
54:         gsub("<", "&lt;").
55:         gsub(">", "&gt;").
56:         gsub("'", "&#39;").
57:         gsub('"', "&quot;")
58:     end

Stolen from Mongrel: Parses a query string by breaking it up at the ’&’ and ’;’ characters. You can also use this to parse cookies by changing the characters used in the second parameter (which defaults to ’&;’).

[Source]

    # File lib/rack/utils.rb, line 32
32:     def parse_query(qs, d = '&;')
33:       params = {}
34:       (qs||'').split(/[#{d}] */n).inject(params) { |h,p|
35:         k, v=unescape(p).split('=',2)
36:         if cur = params[k]
37:           if cur.class == Array
38:             params[k] << v
39:           else
40:             params[k] = [cur, v]
41:           end
42:         else
43:           params[k] = v
44:         end
45:       }
46: 
47:       return params
48:     end

Unescapes a URI escaped string. (Stolen from Camping).

[Source]

    # File lib/rack/utils.rb, line 19
19:     def unescape(s)
20:       s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){
21:         [$1.delete('%')].pack('H*')
22:       }
23:     end

[Validate]