Skip to content

Latest commit

 

History

History
84 lines (57 loc) · 2.31 KB

README.md

File metadata and controls

84 lines (57 loc) · 2.31 KB

curl-aeson library for Haskell

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 joel.lehtonen+curlaeson@iki.fi

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.

Example

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.

Installation

On Ubuntu and Debian

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

Other

Install and configure Haskell Platform. Then, fetch all the requirements and install this library by running:

cabal update
cabal install

License

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.

Contact

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.