[getdns-api] Getting from dicts by subscript operator

Willem Toorop willem at nlnetlabs.nl
Tue Oct 6 23:18:53 CEST 2015


Here are the other examples from the spec, rewritten to use json
pointers, and extended to deal and report all fail cases.

For section 6.1: Get Both IPv4 and IPv6 Addresses for a Domain Name
Using Quick Results:
https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/simple-json-pointer.c

For section 6.2: Get IPv4 and IPv6 Addresses for a Domain Name:
https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/tree-json-pointer.c

For section 6.4: Using the API Synchronously:
https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/synchronous-json-pointer.c

For section 6.5: Getting Names from the Reverse Tree:
https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/reverse-json-pointer.c

-- Willem

Op 05-10-15 om 15:15 schreef Willem Toorop:
> Op 05-10-15 om 15:07 schreef Willem Toorop:
>> Op 23-09-15 om 21:37 schreef Joe Hildebrand (jhildebr):
>>> On 9/23/15, 7:37 AM, "Shane Kerr" <shane at time-travellers.org> wrote:
>>>> I think that the last one is "correct" JSON Pointer syntax if I
>>>> understand the RFC, but I confess that the one above it looks easier to
>>>> read to me. :)
>>>
>>> The last one.  I know it's slightly strange to a C programmer, but to a JavaScript programmer, it's not *too* strange, where a['foo'] === a.foo.  The advantage here is that in a getdns wrapper that is treating the results as JSON, you could use an existing json-pointer implementation.  Also, you don't have to worry about specifying the BNF for the query syntax, thinking about the edge cases, and worrying about the security consequences quite as much.
>>
>> Good point.  Since it has to become part of the spec, it is easier to
>> reference an existing syntax (especially since it is standardized) than
>> to describe a new one.  I have come up with the following wording, to
>> append to the first subsection of section 2. (so just before 2.1. starts)
>>
>> 	When the name parameter to the getdns_dict_get_ functions, starts with
>> a '/' (%x2F) character, it is interpreted as a JSON Pointer as described
>> in RFC6901, and will then be used to dereference the nested data
>> structures to get to the requested data type.
>>
>>
>> And at the end of section 2.1.
>>
>>
>> 	When the name parameter to the getdns_dict_set_ functions, starts with
>> a '/' (%x2F) character, it is interpreted as a JSON Pointer as described
>> in RFC6901, and will then be used to dereference the nested data
>> structures to get to the requested data type.
> 
> 
> Sorry, I copy pasted but forgot to alter.  So I propose this paragraph
> the the spot:
> 
> 	When the name parameter to the getdns_dict_set_ functions, starts with
> a '/' (%x2F) character, it is interpreted as a JSON Pointer as described
> in RFC6901, and will then be used to dereference the nested data
> structures to set the given value at the specified name or list index.
> 
> 
>>
>>
>> Comments or better wordings are welcome.
>>
>> I think the examples in the spec could also benefit from using JSON
>> Pointer syntax.  They are likely to become much shorter and therefor
>> more readable and easier to digest.  Take for example this alternative
>> for the example in section 6.4 (I started with the shortest):
>>
>> https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/synchronous-json-pointer.c
>>
>> What do you think?
>>
>> -- Willem
>> _______________________________________________
>> spec mailing list
>> spec at getdnsapi.net
>>
> 
> _______________________________________________
> spec mailing list
> spec at getdnsapi.net
> 



More information about the spec mailing list