This is a library for communicating with JSON over HTTP connection. It supports rich set of HTTP connectivity features provided by curl library combined to the performance and elegance of aeson.
Author: Joel Lehtonen [email protected]
This library is at its best when communicating with simple, non-standardized JSON interfaces. If you are implementing JSON-RPC compliant client or server, take a look at another library.
Let's simulate a ticker service by creating a file /tmp/ticker.json
with the following content:
{"bid":3,"ask":3.14}
We then define our own data type and define a function which reads the payload from the service:
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Data.Aeson
import Network.Curl.Aeson
data Ticker = Ticker { bid :: Double
, ask :: Double
} deriving (Generic, Show)
instance FromJSON Ticker
ticker :: IO Ticker
ticker = curlAesonGet "file:///tmp/ticker.json"
You may find more examples from package documentation.
Starting from Ubuntu 12.04 and Debian wheezy, all dependencies are found from repositories:
sudo apt-get install libghc-aeson-dev libghc-curl-dev cabal-install
Then just install this:
cabal install
Install and configure Haskell Platform. Then, fetch all the requirements and install this library by running:
cabal update
cabal install
Following the convention of Haskell community, this library is licensed under the terms of BSD 3-clause license. Personally I prefer GPLv3, but this library is simple enough to be released with non-copyleft license.
The license text is included in LICENSE file.
I'm not an expert in doing software packages, so feel free to correct me by sending pull requests. Also, I would like to hear if you have found my library to be useful.