Re: Making Net_URL2 Stable

From: Date: Fri, 22 Jul 2011 14:42:17 +0000
Subject: Re: Making Net_URL2 Stable
References: 1 2 3 4 5 6 7 8 9  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-54409@lists.php.net to get a copy of this message
Hi Alexey, The old Net_URL package tried to handle the multiple slashes case (////) in its resolvePath() method. Other url libraries in other languages can also deal with this, for example : http://pypi.python.org/pypi/urlnorm If Net_URL2 cannot deal with that, it should maybe be renamed Net_RFC3986 so we could keep using Net_URL when we want to be productive. Actually I am not sure RFC3986 says anything about how to normalize multiple slashes in path and it seems to give just examples, not a test suite. A library that is supposed to make working with urls easier should in my opinion be able to normalize this. That's what Net_URL was doing. Maybe the current maintainers have an opinion on that ? Cheers, Bertrand On Fri, Jul 22, 2011 at 12:37 PM, Alexey Borzov <borz_off@cs.msu.su> wrote: > Hi Bertrand, > > On 22.07.2011 0:27, Bertrand Mansion wrote: >> >> Net_URL2 could use the QF2 version instead, looks more robust. > > Both are more or less verbatim implementations of algorithm from RFC 3986, > in fact. > > Anyway, I'd suggest getting rid of $j and the frightening comment in > removeDotSegments() at the very least. > >> Also, don't you think the following rules should be handled : >> >> - '/foo//' =>  '/foo/' >> - '/foo///bar//' =>  '/foo/bar/' > > I am not sure whether this is a good idea: such changes are not described in > RFC 3986, unlike removing dot segments. > > I suppose /foo///bar// is a valid path according to RFC 3986 and different > from /foo/bar/ > > >> On Thu, Jul 21, 2011 at 6:33 PM, Alexey Borzov<borz_off@cs.msu.su>  wrote: >>> >>> Hi Bertrand, >>> >>> On 21.07.2011 15:27, Bertrand Mansion wrote: >>>> >>>> The removeDotSegments() method looks a bit weak with its while() loop >>>> and its comment : >>>> "Make sure not to be trapped in an infinite loop due to a bug in this >>>> method" ... >>> >>> Hopefully there isn't an actual infinite loop bug there and this is just >>> a >>> "safety valve"... >>> >>>> I suggest that you use an explode('/') on $path, then iterate to fill >>>> a second array with tokens from $path using an index that >>>> increase/decrease according to the '..' it meets. >>> >>> ...and we have such a method in HTML_QuickForm2, in fact: >>> >>> >>> http://svn.php.net/viewvc/pear/packages/HTML_QuickForm2/trunk/HTML/QuickForm2/Controller/Action/Jump.php?revision=311435&view=markup >>> (see HTML_QuickForm2_Controller_Action_Jump::normalizePath()) >>> >>> However, both of these methods use the test suite described in RFC 3986 >>> so >>> probably are on the same level of robustness: >>> >>> >>> http://svn.php.net/viewvc/pear/packages/Net_URL2/trunk/tests/Net/URL2Test.php?revision=309226&view=markup >>> (see testResolve()) >>> >>> >>> http://svn.php.net/viewvc/pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Controller/Action/JumpTest.php?revision=309664&view=markup >>> (see testRedirectToAbsoluteUrl()) >>> >>> >>> Speaking of test suites, why aren't tests for Net_URL2 added to >>> package.xml >>> and consequently installed with the package? >>> >>> >>>> On Thu, Jul 21, 2011 at 1:05 PM, till<till@php.net>    wrote: >>>>> >>>>> This is still open: >>>>> http://pear.php.net/bugs/bug.php?id=14399 >>>>> >>>>> Can you check it out and either close/wontfix, etc.? >>>>> >>>>> >>>>> On Tue, Jul 19, 2011 at 4:47 PM, David Coallier<davidc@php.net> >>>>>  wrote: >>>>>> >>>>>> Thanks Alexey, >>>>>> >>>>>> Not planning on any BC breaks just now. >>>>>> >>>>>> Cheers, >>>>>> -- >>>>>> David Coallier >>>>>> >>>>>> -- >>>>>> PEAR Development Mailing List (http://pear.php.net/) >>>>>> To unsubscribe, visit: >>>>>> http://www.php.net/unsub.php >>>>>> >>>>>> >>>>> >>>>> -- >>>>> PEAR Development Mailing List (http://pear.php.net/) >>>>> To unsubscribe, visit: >>>>> http://www.php.net/unsub.php >>>>> >>>>> >>>> >>>> >>>> >> > > -- Bertrand Mansion Mamasam

« previous php.pear.dev (#54409) next »