> Am 11.06.2015 um 16:51 schrieb PBKResearch <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] 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

Reply via email to