Module: Keywright::UriHelpers

Defined in:
lib/keywright/uri_helpers.rb

Class Method Summary collapse

Class Method Details

.parse_query(query, delimiter = nil) ⇒ Object



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
39
40
41
# File 'lib/keywright/uri_helpers.rb', line 13

def parse_query( query, delimiter = nil )
  params = {}

  max_key_space = 1024
  bytes = 0

  ( query || '' ).split( delimiter ? /[#{delimiter}] */n : /[&;] */n ).each do | pair |
    key, value = pair.split( '=', 2 ).map { | x | URI.decode_www_form_component( x ) }

    if key
      bytes += key.size
      if bytes > max_key_space
        raise RangeError, "exceeded available parameter key space"
      end
    end

    if current = params[ key ]
      if current.class == Array
        params[ key ] << value
      else
        params[ key ] = [ current, value ]
      end
    else
      params[ key ] = value 
    end
  end

  return params
end

.valid?(uri) ⇒ Boolean

Returns:

  • (Boolean)


4
5
6
7
8
9
10
11
# File 'lib/keywright/uri_helpers.rb', line 4

def valid?( uri )
  uri = uri.is_a?( URI ) ? uri : URI.parse( uri.to_s ) 
  return false unless uri.is_a?( URI::HTTP ) || uri.is_a?( URI::HTTPS )
  return false if uri.host.nil? || uri.host.strip.empty?
  true
rescue URI::InvalidURIError
  false
end