Class: HttpVanilli::Util

Inherits:
Object show all
Defined in:
lib/http_vanilli/util.rb

Class Method Summary collapse

Class Method Details

.decode_userinfo_from_header(header) ⇒ Object



5
6
7
# File 'lib/http_vanilli/util.rb', line 5

def self.decode_userinfo_from_header(header)
  header.sub(/^Basic /, "").unpack("m").first
end

.encode_unsafe_chars_in_userinfo(userinfo) ⇒ Object



9
10
11
12
# File 'lib/http_vanilli/util.rb', line 9

def self.encode_unsafe_chars_in_userinfo(userinfo)
  unsafe_in_userinfo = /[^#{URI::REGEXP::PATTERN::UNRESERVED};&=+$,]|^(#{URI::REGEXP::PATTERN::ESCAPED})/
  userinfo.split(":").map { |part| uri_escape(part, unsafe_in_userinfo) }.join(":")
end

.strip_default_port_from_uri(uri) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/http_vanilli/util.rb', line 14

def self.strip_default_port_from_uri(uri)
  case uri
  when %r{^http://}  then uri.sub(%r{:80(/|$)}, '\1')
  when %r{^https://} then uri.sub(%r{:443(/|$)}, '\1')
  else uri
  end
end

.uri_escape(*args) ⇒ Object

Wrapper for URI escaping that switches between URI::Parser#escape and URI.escape for 1.9-compatibility



24
25
26
27
28
29
30
# File 'lib/http_vanilli/util.rb', line 24

def self.uri_escape(*args)
  if URI.const_defined?(:Parser)
    URI::Parser.new.escape(*args)
  else
    URI.escape(*args)
  end
end