No description
Find a file
2016-06-20 15:13:49 -05:00
gen update cabal 2016-02-20 13:53:28 -06:00
samples add lenses for apitypes 2016-02-19 22:57:38 -06:00
src add tests 2016-06-16 22:25:59 -05:00
tests refactor test 2016-06-17 21:46:05 -05:00
.gitignore add stack files 2015-09-06 20:33:44 -05:00
.travis.yml add travis 2016-06-20 15:13:49 -05:00
changelog.md add tests 2016-06-16 22:25:59 -05:00
LICENSE init 2015-03-13 22:56:27 -05:00
pinboard.cabal refactor test 2016-06-17 21:46:05 -05:00
README.md add lenses for apitypes 2016-02-19 22:57:38 -06:00
Setup.lhs init 2015-03-13 22:56:27 -05:00
stack-7.10.yaml add tests 2016-06-16 22:25:59 -05:00
stack-nightly-2016-06-05.yaml add tests 2016-06-16 22:25:59 -05:00
stack.yaml update stack resolver 2016-06-09 21:44:34 -05:00

Pinboard Hackage

The Pinboard API is a way to interact programatically with your bookmarks, notes and other Pinboard data. This library wraps the API exposing functions and data structures suitable for usage in Haskell programs.

Hackage page and Haddock documentation

http://hackage.haskell.org/package/pinboard

Pinboard Api documentation

https://pinboard.in/api/

Examples:

getPostsRecent

{-# LANGUAGE OverloadedStrings #-}

import Pinboard

main :: IO ()
main = do
  let config = fromApiToken "api token"
  result <- runPinboard config $ getPostsRecent Nothing Nothing
  case result of
    Right details -> print details
    Left pinboardError -> print pinboardError

output:

Posts{postsDate = 2015 - 10 - 24 16 : 17 : 12 UTC,
       postsUser = "jonschoning",
       postsPosts =
         [Post{postHref = "http://www.reddit.com/r/haskell/comments/25vj62/adventure_with_types_in_haskell_simon_peyton/",
               postDescription = "Adventure with Types in Haskell - Simon Peyton Jones [1:33:36] : haskell",
               postExtended = "", 
               postMeta = "3fe9fb05c7c37f7bb66be7b9d85599eb",
               postHash = "c46b717604ef8b126dabeba97b27a36f",
               postTime = 2014 - 5 - 19 3 : 35 : 55 UTC, 
               postShared = True,
               postToRead = False,
               postTags = ["spj", "video", "haskell", "typetheory"]}]}

getPostsRecent (using Lenses)

{-# LANGUAGE OverloadedStrings #-}

import Pinboard
import Control.Lens

main :: IO ()
main = do
  let config = fromApiToken "api token"
  result <- runPinboard config $ getPostsRecent (Just ["haskell"]) (Just 3)
  mapM_ print (result ^.. _Right . postsPostsL . traverse . postHrefL)

output:

"http://www.stephendiehl.com/posts/production.html"
"https://mail.haskell.org/mailman/listinfo"
"https://en.wikibooks.org/wiki/Haskell/Applicative_functors#A_sliding_scale_of_power"

Modules

Pinboard.Types

Pinboard typeclasses and type aliases

Pinboard.Client

Executes the methods defined in Pinboard.Api

Pinboard.Api

Provides Pinboard Api Methods

Pinboard.ApiTypes

Pinboard Data Structures returned by the Api

Pinboard.ApiTypesLens

Lens accessors for Pinboard.ApiTypes