> Am 12.06.2015 um 12:03 schrieb PBKResearch <pe...@pbkresearch.co.uk>: > > Norbert > > Some comments on your latest post below. > > I just wrote because you told Jimmie to alter a method of a third-party > library. And that is a no-go. > > Zinc, like almost all of Pharo, is MIT licenced, “including without > limitation the rights to use, copy, modify, merge, publish…” Once the code is > on my machine, I am entitled to alter it for my own use in any way I see fit; > so is Jimmie. It is clear from Sven’s comments that not encoding commas is a > design decision, and a departure from earlier Zinc working. Sven himself says > “ maybe we made a mistake, maybe not.” I am entitled to disagree with that > decision, and to act on that disagreement; so is Jimmie. I just told him how > to do it quickly and safely. > So, the misunderstanding is because we seem to have different views on the topic. I have always projects in mind that are built together by a build system and they produce something deployable. Your proposal doesn't fit in this view for me. If you alter a third-party function you need to make that a repeatable task which is having an expression to patch the third-party library again if you build the project again.
> The way to change it and have Sven it commited is doable. > > Obviously it would be ideal if Sven made a change which allowed encoding of > commas. However, that does not seem likely to happen any time soon. > Meanwhile, Jimmie was stuck with a program which would not carry out a > function that should be quite normal. > > As is my proposal that you can change the code in a reliable way without > changing a third-party library. That's all I wanted to say. > > No doubt your subclassing approach would work, though not as easily as you > imply. The method that encodes the key-value pairs of a query is not > #encodeQuery:on:, it is #printQueryOn: (see > ZnUrl>>#printPathQueryFragmentOn:); changing that would involve having > variant versions of ZnResourceMetaUtils>>#writeQueryFields:on: and > >>writeQueryFields:withEncoder:on:, as well as a new safe list. Yes, but it is still the thing you can do immediately without having to patch code that is not under your control. That's my whole point. I wouldn't consider my approach good or even nice. > > And yes I think it applies to monkey patching. Choosing weaker terms just to > avoid problems is not the way to go IMHO. > > I was not asking for a weaker term, I was asking for a less offensive one. I > think this term is offensive in all contexts, and should not be used. Henry’s > comment implies that it is widely used, and everyone knows what it means. In > my youth, 60-70 years ago, the n-word was widely used to refer to people of > African origin, and everyone knew what it meant. Now, thank goodness, we see > how offensive it was. To me, this expression is equally offensive. You used > it, in a derogatory sense, to criticise what I had done in helping Jimmie. > Frankly, I do not think you were sincere in saying “No offense meant.” > I like the term monkey patching because it is as funny as it might be offensive. The rest I don't want to comment because I could easily be offended by your paragraph above…if I only had those kinds of sensitivities. And btw. don't hide behind something like not using a certain word. You can still be a racist without using the n-word. What is needed is to change attitude not words. > I had thought of just ignoring your comment, thinking that we will have to > agree to differ. However, your reiteration of the m-word has got me > sufficiently riled to make another protest. I may be a lone voice here, but > that does not make my views any less valid. dito. Let's close this case. To me it is a little misunderstanding that took the wrong route. Norbert > > Peter Kenny > > > From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of > Norbert Hartl > Sent: 11 June 2015 17:07 > To: Pharo users users > Subject: Re: [Pharo-users] ZnClient and percent characters > > >> Am 11.06.2015 um 16:51 schrieb PBKResearch <pe...@pbkresearch.co.uk >> <mailto:pe...@pbkresearch.co.uk>>: >> >> Norbert >> >> Apology accepted – I had never heard this term before. However, having read >> the Wikipedia article Henry mentioned, I do not think it applies to what I >> had done. If Sven accepts the argument that commas should always be encoded >> in query lines – and I can see a strong argument for that from what I have >> read – then the change I made is just what he will need to do. I simply >> anticipated the decision. If it goes the other way, then it was just a hack >> to solve Jimmie’s problem – but it might be better to say ‘hack’ rather than >> use a term which is potentially offensive. >> > I just wrote because you told Jimmie to alter a method of a third-party > library. And that is a no-go. The way to change it and have Sven it commited > is doable. As is my proposal that you can change the code in a reliable way > without changing a third-party library. That's all I wanted to say. And yes I > think it applies to monkey patching. Choosing weaker terms just to avoid > problems is not the way to go IMHO. > > >> I also note Jimmie’s argument that, as long as there are some sites which >> insist on encoded commas, it must be possible to generate such lines if Zinc >> is to be generally useful. Whether this should be a user-controlled option, >> as Sven seems to suggest, is open to discussion – but if so I would argue >> for encoding of commas as the safe default, which can be overridden if >> necessary. >> > Sure. Zinc should behave correctly and it should provide functionalities to > make it "less correct". And these functionalities shouldn't be too easy to > use ;) > > Norbert > > >> Peter Kenny >> >> From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org >> <mailto:pharo-users-boun...@lists.pharo.org>] On Behalf Of Norbert Hartl >> Sent: 11 June 2015 11:25 >> To: Pharo users users >> Subject: Re: [Pharo-users] ZnClient and percent characters >> >> No offense meant. I assumed you would know the term. Sorry! Henry explained >> it quite good what I meant. >> >> Norbert >> >>> Am 11.06.2015 um 09:51 schrieb PBKResearch <pe...@pbkresearch.co.uk >>> <mailto:pe...@pbkresearch.co.uk>>: >>> >>> I don’t quite understand Norbert’s comment. Does ‘monkey’ apply to me or to >>> what I have done? Either way, it seems unnecessary and abusive. >>> >>> Thanks to Sven’s careful use of informative method names, the effect of my >>> change is quite clear. Any comma in the value part of a query line will be >>> encoded. Nothing else. I did my best to trace any side effects, and didn’t >>> find any. What is not ‘reliable’ about that? >>> >>> Peter Kenny >>> >>> >>> I was thinking of a reliable solution. Of course if it only needs to be >>> tested than monkey patching foreign packages is ok. >>> >>> Norbert >>> >>>> Am 11.06.2015 um 01:22 schrieb PBKResearch <pe...@pbkresearch.co.uk >>>> <mailto:pe...@pbkresearch.co.uk>>: >>>> >>>> There is a simpler way than Norbert’s suggestion. Find the class >>>> ZnResourceMetaUtils (in the package Zinc-Resource-Meta-Core). Locate the >>>> class side method #queryKeyValueSafeSet. Remove the comma from the string. >>>> With this change your ‘Google’ example generates the query line with the >>>> ‘%2C’ encoding of the commas. >>>> >>>> Of course, with this change a comma in the value field of a query will >>>> always be encoded. It is not clear to me whether this is correcting an >>>> error in Zinc, or just a hack to solve your problem – earlier posts here >>>> endorse both views. No doubt Sven is the person to sort this out. >>>> Meanwhile, this will enable you to get moving. >>>> >>>> Hope this helps >>>> >>>> Peter Kenny >>>> >>>> From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org >>>> <mailto:pharo-users-boun...@lists.pharo.org>] On Behalf Of Norbert Hartl >>>> Sent: 10 June 2015 23:56 >>>> To: Pharo users users >>>> Subject: Re: [Pharo-users] ZnClient and percent characters >>>> >>>> Just to clarify: >>>> >>>> "Characters in the "reserved" set are not reserved in all contexts. >>>> The set of characters actually reserved within any given URI >>>> component is defined by that component. In general, a character is >>>> reserved if the semantics of the URI changes if the character is >>>> replaced with its escaped US-ASCII encoding." >>>> If I were you I'd subclass ZnUrl and implement >>>> #encodeQuery:on: >>>> on that class. You could have an extension method in ZnResourceMetaUtils >>>> that returns the character set you need to have encoded. In ZnClient you >>>> just set your ZnUrl derived class object as #url: >>>> Cannot think of anything better for a quick resolve of your problem. >>>> Norbert >>>>> Am 11.06.2015 um 00:26 schrieb Jimmie Houchin <jlhouc...@gmail.com >>>>> <mailto:jlhouc...@gmail.com>>: >>>>> >>>>> I am not an expert on URIs or encoding. However, this is a requirement of >>>>> the API I am using and I am required to submit an encoded URI with %2C >>>>> and no commas. >>>>> >>>>> As far as commas needing to be escaped, it seems from other sources that >>>>> they should be. >>>>> >>>>> From https://www.ietf.org/rfc/rfc2396.txt >>>>> <https://www.ietf.org/rfc/rfc2396.txt> >>>>> >>>>> >>>>> >>>>> >>>>> The plus "+", dollar "$", and comma "," characters have been added to >>>>> those in the "reserved" set, since they are treated as reserved >>>>> within the query component. >>>>> >>>>> States that commas are reserved within the query component. >>>>> >>>>> http://stackoverflow.com/questions/8828702/why-is-the-comma-url-encoded >>>>> <http://stackoverflow.com/questions/8828702/why-is-the-comma-url-encoded> >>>>> >>>>> Regardless of what is or is not required, I do need the ability to have a >>>>> query string with commas encoded as %2C in order to satisfy and use the >>>>> API which states. >>>>> >>>>> fields: Optional An URL encoded (%2C) comma separated list of instrument >>>>> fields that are to be returned in the response. The instrument field will >>>>> be returned regardless of the input to this query parameter. Please see >>>>> the Response Parameters section below for a list of valid values. >>>>> >>>>> Which will look like this or something similar. >>>>> >>>>> fields=displayName%2Cinstrument%2Cpip >>>>> >>>>> >>>>> Thanks. >>>>> >>>>> Jimmie >>>>> >>>>> On 06/10/2015 03:27 PM, Norbert Hartl wrote: >>>>>> That's because the comma does not need to be escaped in the query part >>>>>> of the uri. >>>>>> >>>>>> Norbert >>>>>> >>>>>>> Am 10.06.2015 um 22:00 schrieb Jimmie Houchin <jlhouc...@gmail.com> >>>>>>> <mailto:jlhouc...@gmail.com>: >>>>>>> >>>>>>> On 06/10/2015 10:32 AM, Sven Van Caekenberghe wrote: >>>>>>>>> On 10 Jun 2015, at 17:24, David <stormb...@gmail.com> >>>>>>>>> <mailto:stormb...@gmail.com> wrote: >>>>>>>>> >>>>>>>>> El Wed, 10 Jun 2015 10:14:37 -0500 >>>>>>>>> Jimmie Houchin <jlhouc...@gmail.com> <mailto:jlhouc...@gmail.com> >>>>>>>>> escribió: >>>>>>>>>> Hello, >>>>>>>>>> >>>>>>>>>> I am attempting to use ZnClient to request data. The request requires >>>>>>>>>> a %2C (comma) delimited string as part of the query. Below is a >>>>>>>>>> snippet. >>>>>>>>>> >>>>>>>>>> znClient >>>>>>>>>> addPath: '/v1/instruments'; >>>>>>>>>> queryAt: 'fields' putAll: 'displayName%2Cinstrument%2Cpip'; >>>>>>>>>> get ; >>>>>>>>>> contents) >>>>>>>>>> >>>>>>>>>> The string 'displayName%2Cinstrument%2Cpip' >>>>>>>>>> is being converted to 'displayName%252Cinstrument%252Cpip' >>>>>>>>>> which causes the request to fail. >>>>>>>>>> >>>>>>>>>> The query needs to be >>>>>>>>>> fields=displayName%2Cinstrument%2Cpip >>>>>>>>>> >>>>>>>>>> I have not found how to do this correctly. >>>>>>>>>> Any help greatly appreciated. >>>>>>>>>> >>>>>>>>>> Thanks. >>>>>>>>>> >>>>>>>>>> Jimmie >>>>>>>>>> >>>>>>>>>> >>>>>>>>> Maybe a silly thing, but since %2C = , ... Did you tried already to >>>>>>>>> make itself encode that? Like >>>>>>>>> znClient >>>>>>>>> addPath: '/v1/instruments'; >>>>>>>>> queryAt: 'fields' putAll: 'displayName,instrument,pip'; >>>>>>>>> get ; >>>>>>>>> contents) >>>>>>>>> >>>>>>>>> I suspect it is using encoding internally, that is why % is also >>>>>>>>> encoded if you try to put it. >>>>>>>>> >>>>>>>>> I hope that works >>>>>>>> Not silly and no need to suspect, but absolutely correct ! >>>>>>>> >>>>>>>> Sven >>>>>>> My apologies for not having full disclosure. >>>>>>> >>>>>>> Pharo 4, new image, freshly installed Zinc stable version. >>>>>>> Xubuntu 15.04 >>>>>>> >>>>>>> >>>>>>> >>>>>>> That is what I thought would happen and what I tried first. But it is >>>>>>> not being encoded from what I can find. >>>>>>> >>>>>>> Inspect this in a workspace/playground. >>>>>>> >>>>>>> ZnClient new >>>>>>> https; >>>>>>> host: 'google.com <http://google.com/>'; >>>>>>> addPath: '/commaTest'; >>>>>>> queryAt: 'fields' put: 'displayName,instrument,pip'; >>>>>>> yourself >>>>>>> >>>>>>> View the request / requestLine / uri. The commas are still present in >>>>>>> the URI. >>>>>>> So I tried encoding myself and get the other error. >>>>>>> >>>>>>> Of course Google won't understand this and in this snippet won't >>>>>>> receive it. >>>>>>> >>>>>>> And please let me know if I am doing something wrong. >>>>>>> >>>>>>> Any help greatly appreciated. >>>>>>> >>>>>>> Jimmie