Re: [webfinger] feedback for multiple "rel"

nov matake <matake@gmail.com> Sun, 23 December 2012 04:35 UTC

Return-Path: <matake@gmail.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 703F921F87B1 for <webfinger@ietfa.amsl.com>; Sat, 22 Dec 2012 20:35:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.992
X-Spam-Level:
X-Spam-Status: No, score=-0.992 tagged_above=-999 required=5 tests=[AWL=-1.673, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_33=0.6, J_CHICKENPOX_36=0.6, J_CHICKENPOX_44=0.6, MIME_QP_LONG_LINE=1.396, RCVD_IN_DNSWL_LOW=-1, URIBL_RHS_DOB=1.083]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HDOPRWYVh3IR for <webfinger@ietfa.amsl.com>; Sat, 22 Dec 2012 20:35:05 -0800 (PST)
Received: from mail-pb0-f48.google.com (mail-pb0-f48.google.com [209.85.160.48]) by ietfa.amsl.com (Postfix) with ESMTP id E467721F8781 for <webfinger@ietf.org>; Sat, 22 Dec 2012 20:35:04 -0800 (PST)
Received: by mail-pb0-f48.google.com with SMTP id rq13so3444007pbb.35 for <webfinger@ietf.org>; Sat, 22 Dec 2012 20:35:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:content-type:mime-version:subject:from:in-reply-to:date :cc:message-id:references:to:x-mailer; bh=j0UnLbi62ieXyK7oqM4YLxgZxmzQec6H0Pf4bHUXF78=; b=l6fezA+7rRToOMjrsvA437tpDPuDp67iQc9g5LWeDiu2huovjiV6q0EQrgXuI80xNE SWNhDIbSj04pBcTQixPAJgzrsH4eFNl9BcSlntt1p9DeH/AbknNP5EiBSNQ4NoOAKuk3 CW8cYLwISzQwhNUVa5y/DkphZ5offTeiyAvLOnpxmjHja/6vVC+tet2Hgy07jnXTwtRZ UCKRYN+Pi+7kfYSO0xHQAteX9dKJ8O8UEZDfuiJ2RYz5CkegDoUuWHyXD7R668RaZMYE DqZUDz3zubKonzzATqHFsqxVv0QqTYs6qgyEAZ81c/9t0o7dSs7KyngsZDJAV6ku8saA TYvA==
X-Received: by 10.66.73.138 with SMTP id l10mr51257664pav.44.1356237299986; Sat, 22 Dec 2012 20:34:59 -0800 (PST)
Received: from [192.168.1.6] (z195031.dynamic.ppp.asahi-net.or.jp. [110.4.195.31]) by mx.google.com with ESMTPS id yi9sm9883737pbc.39.2012.12.22.20.34.55 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 22 Dec 2012 20:34:57 -0800 (PST)
Content-Type: multipart/alternative; boundary="Apple-Mail=_4281F691-499F-472C-9F7D-EAA2D369ED84"
Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\))
From: nov matake <matake@gmail.com>
In-Reply-To: <00a501cde0c5$8fb5d510$af217f30$@packetizer.com>
Date: Sun, 23 Dec 2012 13:34:54 +0900
Message-Id: <A04A363D-623E-47D5-8322-2F0899E76656@gmail.com>
References: <58036BAD-2161-4420-A724-343883F627B7@gmail.com> <CAKaEYhKGP0aMxsStNxTfYy3D=TbrnwtCVNz3yF3Su0TVkBXrOQ@mail.gmail.com> <7E9916BF-8D64-4F61-A40F-3A74533AEFD2@gmail.com> <001101cde0a0$7fda6220$7f8f2660$@packetizer.com> <CABP7RbcswbV=38LVZJobn5m6jJFW5N_a1O+8BkXu-S5+ixyKNA@mail.gmail.com> <004d01cde0ad$175b5d00$46121700$@packetizer.com> <57CE8BD9-286D-460E-92D8-E4E64C3377D0@gmail.com> <006601cde0b3$2bb9ff30$832dfd90$@packetizer.com> <9D326871-8C8D-41A7-A6E0-A4E45FA75E09@gmail.com> <00a501cde0c5$8fb5d510$af217f30$@packetizer.com>
To: "Paul E. Jones" <paulej@packetizer.com>
X-Mailer: Apple Mail (2.1499)
Cc: webfinger@ietf.org, 'James M Snell' <jasnell@gmail.com>, 'Melvin Carvalho' <melvincarvalho@gmail.com>, 'Dick Hardt' <dick.hardt@gmail.com>
Subject: Re: [webfinger] feedback for multiple "rel"
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/webfinger>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 04:35:06 -0000

Developers who uses my library in their rails project would use that function.
I can't stop them.

Of course, I can ask developers to give raw request object (which includes raw requested url, cookies etc) to my library.
But developers will feel weird to give raw request object only for multiple rel case, I think.

====
# put raw request object
WebFinger.discover @request

# put resource & rel only (I prefer this one)
WebFinger.discover params[:resource], params[:rel]
====

On 2012/12/23, at 13:25, Paul E. Jones <paulej@packetizer.com> wrote:

> Nov,
>  
> Do you absolutely need to use that particular function?  It appears that it returns an associative array where the values are not array (unlike the “cgi” code).  So, if using it is required, this will certainly present a challenge.
>  
> I would assume WF is not the first thing to use multiple parameters with the same name.  This has not been encountered before?
>  
> Paul
>  
> From: nov matake [mailto:matake@gmail.com] 
> Sent: Saturday, December 22, 2012 11:16 PM
> To: Paul E. Jones
> Cc: 'Dick Hardt'; 'James M Snell'; webfinger@ietf.org; 'Melvin Carvalho'
> Subject: Re: [webfinger] feedback for multiple "rel"
>  
> CGI library handle it well.
> It returns query values as array even when it's a single value though.
>  
> So the issue is Rails (actually it uses Rack::Utils.parse_nested_query) only.
> It takes only the last "rel" value.
>  
> > require 'rack'
> > Rack::Utils.parse_nested_query "rel=a&rel=b"
> => {"rel"=>"b"} 
>  
>  
> On 2012/12/23, at 11:13, "Paul E. Jones" <paulej@packetizer.com> wrote:
> 
> 
> Dick, Nov,
>  
> I’ve never written a Ruby program before, but I was quite curious as to whether it was or was not possible to access multiple “rel” parameters.  It appears that is.  Here’s my first Ruby program (and my apologies to the developers of Ruby):
>  
> #!/bin/ruby
>  
> require 'cgi'
>  
> cgi = CGI.new
>  
> params = cgi.params
>  
> # Following appears to show an associative array with values that are arrays
> puts params;
>  
> # Grab the 'rel' array
> rels = params['rel'];
>  
> # Display the array
> puts rels;
>  
> # How many items are in the "rel" array?
> count = rels.size
> print "Number of rel params: ", count, "\n";
>  
> # Can I access each one?
> for i in 0..(count-1)
>    print "Item ", i, ": ", rels[i], "\n"
> end
>  
> Here’s what I get:
>  
> $ ./test "rel=rel1&c=d&rel=rel2&e=f"
> {"rel"=>["rel1", "rel2"], "c"=>["d"], "e"=>["f"]}
> rel1
> rel2
> Number of rel params: 2
> Item 0: rel1
> Item 1: rel2
>  
> So, it looks like it works to me.  Is the issue only with Rails?  I’m not going to venture down that path to see what the issue is, but if Ruby can access the data, can’t it provide it to Rails in a form that it likes?
>  
> Paul
>  
> From: Dick Hardt [mailto:dick.hardt@gmail.com] 
> Sent: Saturday, December 22, 2012 8:40 PM
> To: Paul E. Jones
> Cc: 'James M Snell'; webfinger@ietf.org; 'nov matake'; 'Melvin Carvalho'
> Subject: Re: [webfinger] feedback for multiple "rel"
>  
> FYI: multiple query string params with the same name are turned into arrays or parsed into arrays in node.js
>  
> the following script:
>  
> var querystring = require('querystring')
> console.log( querystring.parse( 'foo=bar&rel=token1&rel=token2' ) )
> console.log( querystring.stringify( {'foo':'bar','rel':['token1','token2']} ) )
>  
> outputs:
>  
> { foo: 'bar', rel: [ 'token1', 'token2' ] }
> foo=bar&rel=token1&rel=token2
>  
> Perhaps Ruby devs should just move to the next cool language? :-)
> Seriously though, what does the query string parser do in Ruby?
>  
> -- Dick
>  
> On Dec 22, 2012, at 5:30 PM, "Paul E. Jones" <paulej@packetizer.com> wrote:
> 
> 
> 
> That depends on where they’re used.  If I tell you the “rel” value is “http://example.com/first one”, I don’t escape that as I write it.  Or are you saying there is text somewhere that already makes that, as written, illegal?
>  
> I’m quite favorable to a space-separated list of rel values in a single rel parameter, too.  I was concerned before that spaces would present an issue, but figured we could either we make spaces illegal in rel values (which we can do since those are fabricated things!) or we double-escape.  My preference is a single escape and a single rel parameter and spaces are illegal in the “rel” values themselves.
>  
> But, the forces that be pushed pretty hard to change from &rel=token1%20token to &rel=token1&rel=token2.  At the end of the day, it makes no difference to me since I just need to know which way to deal with it.
>  
> So Ruby can really only support only a single parameter with a given name?  It will not collect those into an array or anything?
>  
> Paul
>  
> From: James M Snell [mailto:jasnell@gmail.com] 
> Sent: Saturday, December 22, 2012 7:51 PM
> To: Paul E. Jones
> Cc: nov matake; Melvin Carvalho; webfinger@ietf.org
> Subject: Re: [webfinger] feedback for multiple "rel"
>  
> Spaces in rel values are already illegal.. specifically, spaces are disallowed in registered link relations and non-escaped spaces are disallowed in absolute IRI's.. A comma delimited list of rel's is better than multiple individual parameters.. even with the potential need for double encoding.
>  
>  
>  
> 
> On Sat, Dec 22, 2012 at 4:00 PM, Paul E. Jones <paulej@packetizer.com> wrote:
> If we made it a requirement that “rel” values have no spaces (which I would argue is a damn good thing for many reasons) then we would not have to double-encode.
>  
> Paul
>  
> From: webfinger-bounces@ietf.org [mailto:webfinger-bounces@ietf.org] On Behalf Of nov matake
> Sent: Saturday, December 22, 2012 11:12 AM
> To: Melvin Carvalho
> 
> Cc: webfinger@ietf.org
> Subject: Re: [webfinger] feedback for multiple "rel"
>  
> BTW, why double encoding lead "problems with things like canonical urls and search engines"?
> Can you provide more details?
>  
> If 2 rel included, the response would be different than when only 1 rel given.
> So I feel those 2 are not the same, and can be indexed as 2 resources..
>  
> On 2012/12/23, at 0:44, Melvin Carvalho <melvincarvalho@gmail.com> wrote:
>  
> 
>  
> 
> On 22 December 2012 05:48, nov matake <matake@gmail.com> wrote:
> Hi,
> 
> I have a comment for they way to specify multiple "rel" values.
> 
> As a ruby library developer, my main target is rails developers.
> Since rails can't handle multiple same query keys, developers will need to hack query params parser in rails middleware layer.
> I can easily imagine it'll be an annoying part to support webfinger in rails.
> 
> Is the multiple "rel" case can be a space-delimitered (or some other character) strings like multiple redirect_uri in OAuth2?
> Or any reason for putting multiple same keys in query parameters?
> 
> each time you delimit a list, you have to be able to escape the delimiter, which can be a pain and also leads to problems with things like canonical urls and search engines
> 
> can you use mod_rewrite?
>  
> 
> Cheers,
> 
> Nov Matake
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger
>  
>  
> 
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger
> 
>  
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger