module Pusher::Signature::QueryEncoder

Query string encoding extracted with thanks from em-http-request

Public Class Methods

encode_param(k, v) click to toggle source

URL encodes query parameters: single k=v, or a URL encoded array, if v is an array of values

# File lib/pusher/signature/query_encoder.rb, line 8
def encode_param(k, v)
  if v.is_a?(Array)
    v.map { |e| escape(k) + "[]=" + escape(e) }.join("&")
  else
    escape(k) + "=" + escape(v)
  end
end
encode_param_without_escaping(k, v) click to toggle source

Like encode_param, but doesn’t url escape keys or values

# File lib/pusher/signature/query_encoder.rb, line 17
def encode_param_without_escaping(k, v)
  if v.is_a?(Array)
    v.map { |e| k + "[]=" + e }.join("&")
  else
    "#{k}=#{v}"
  end
end

Private Class Methods

bytesize(string) click to toggle source
# File lib/pusher/signature/query_encoder.rb, line 38
def bytesize(string)
  string.bytesize
end
escape(s) click to toggle source
# File lib/pusher/signature/query_encoder.rb, line 27
def escape(s)
  if defined?(EscapeUtils)
    EscapeUtils.escape_url(s.to_s)
  else
    s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/n) {
      '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
    }
  end
end