Package pinboard imports pinboard.in posts.
This package uses the v1 api documented here: https://pinboard.in/api.
Note that the api document seems to use 'post' and 'bookmark' interchangeably. We use 'post' everywhere in this code.
Posts in pinboard are mutable; they can be edited or deleted.
We handle edited posts by always reimporting everything and rewriting any nodes. Perhaps this would become more efficient if we would first compare the meta tag from pinboard to the meta tag we have stored to only write the node if there are changes.
We don't handle deleted posts. One possible approach for this would be to import everything under a new permanode, then once it is successful, swap the new permanode and the posts node (note: I don't think I really understand the data model here, so this is sort of gibberish).
I have exchanged email with Maciej Ceglowski of pinboard, who may in the future provide an api that lets us query what has changed. We might want to switch to that when available to make the import process more light-weight.
const ( // StatusTooManyRequests is the http status code returned by // pinboard servers if we have made too many requests for a // particular user. If we receive this status code, we should // double the amount of time we wait before trying again. StatusTooManyRequests = 429 )