module Puma::Util

Constants

DEFAULT_SEP

Public Class Methods

escape(s, encoding = Encoding::UTF_8) click to toggle source
# File lib/puma/util.rb, line 24
def escape(s, encoding = Encoding::UTF_8)
  URI.encode_www_form_component(s, encoding)
end
unescape(s, encoding = Encoding::UTF_8) click to toggle source
# File lib/puma/util.rb, line 28
def unescape(s, encoding = Encoding::UTF_8)
  URI.decode_www_form_component(s, encoding)
end

Public Instance Methods

parse_query(qs, d = nil, &unescaper) click to toggle source

Stolen from Mongrel, with some small modifications: 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 '&;').

# File lib/puma/util.rb, line 49
def parse_query(qs, d = nil, &unescaper)
  unescaper ||= method(:unescape)

  params = {}

  (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
    next if p.empty?
    k, v = p.split('=', 2).map(&unescaper)

    if cur = params[k]
      if cur.class == Array
        params[k] << v
      else
        params[k] = [cur, v]
      end
    else
      params[k] = v
    end
  end

  params
end
pipe() click to toggle source
# File lib/puma/util.rb, line 9
def pipe
  IO.pipe
end
purge_interrupt_queue() click to toggle source

An instance method on Thread has been provided to address bugs.ruby-lang.org/issues/13632, which currently effects some older versions of Ruby: 2.2.7 2.2.8 2.2.9 2.2.10 2.3.4 2.4.1 Additional context: github.com/puma/puma/pull/1345

# File lib/puma/util.rb, line 16
def purge_interrupt_queue
  Thread.current.purge_interrupt_queue if Thread.current.respond_to? :purge_interrupt_queue
end

Private Instance Methods

escape(s, encoding = Encoding::UTF_8) click to toggle source
# File lib/puma/util.rb, line 24
def escape(s, encoding = Encoding::UTF_8)
  URI.encode_www_form_component(s, encoding)
end
unescape(s, encoding = Encoding::UTF_8) click to toggle source
# File lib/puma/util.rb, line 28
def unescape(s, encoding = Encoding::UTF_8)
  URI.decode_www_form_component(s, encoding)
end