Module: Doze::Utils

Extended by:
Utils
Included in:
Application, Responder, Responder::Resource, Response, Utils
Defined in:
lib/doze/utils.rb

Overview

Various stateless utility functions which aid the conversion back and forth between HTTP syntax and the more abstracted ruby representations we use.

Constant Summary collapse

URI_SCHEMES =
Hash.new(URI::Generic).merge!(
  'http' => URI::HTTP,
  'https' => URI::HTTPS
)

Instance Method Summary collapse

Instance Method Details

#escape(s) ⇒ Object



42
43
44
45
46
# File 'lib/doze/utils.rb', line 42

def escape(s)
  s.gsub(/([^a-zA-Z0-9_.-]+)/n) do
    '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
  end
end

#quote(str) ⇒ Object



22
23
24
# File 'lib/doze/utils.rb', line 22

def quote(str)
  '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
end

#request_base_uri(request) ⇒ Object



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

def request_base_uri(request)
  URI_SCHEMES[request.scheme].build(
    :scheme => request.scheme,
    :port => request.port,
    :host => request.host
  )
end

#unescape(s) ⇒ Object

Rack::Utils.unescape, but without turning ‘+’ into ‘ ’ Also must be passed a string.



33
34
35
# File 'lib/doze/utils.rb', line 33

def unescape(s)
  s.gsub(/((?:%[0-9a-fA-F]{2})+)/n) { [$1.delete('%')].pack('H*') }
end