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