def url(root, params = {})
      dest = root.dup

      dest << (dest.include?("?") ? "&" : "?")
      dest << "#{type}=#{param}"

      params.each_pair do |key, value|
        dest << "&#{key}=#{CGI.escape(value.to_s)}"
      end

      dest
    end
def url(root, params = {})
      dest = root.dup

      dest << (dest.include?("?") ? "&" : "?")
      dest << "#{type}=#{param}"

      params.each_pair do |key, value|
        dest << "&#{key}=#{CGI.escape(value.to_s)}"
      end

      dest
    end
Utility method to get the full redirect destination, Request#url("https://idp.example.com/saml", { :RelayState => "https://sp.example.com/saml" })