curl-aeson: Communicate with HTTP service using JSON

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

A library for communicating with JSON over HTTP connection. Supports rich set of HTTP connectivity features provided by libcurl combined to the performance and elegancy of aeson.

All HTTP methods are supported. Instances of ToJSON and FromJSON typeclasses can be transferred via this library. Session cookies and other HTTP options may be passed to libcurl if needed.

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 http://hackage.haskell.org/package/jmacro-rpc.


[Skip to Readme]

Properties

Versions 0.0.3, 0.0.4, 0.1.0.0, 0.1.0.0, 0.1.0.1, 0.1.0.2
Change log None available
Dependencies aeson (>=0.6), base (>=4 && <5), bytestring (>=0.10.8.1 && <0.12), curl (>=1.3 && <1.4), text (>=1.2.3.0 && <1.3 || >=2.0 && <2.1) [details]
License BSD-3-Clause
Author Joel Lehtonen
Maintainer joel.lehtonen+curlaeson@iki.fi
Category Network, Web, JSON
Home page https://github.com/zouppen/haskell-curl-aeson
Bug tracker https://github.com/zouppen/haskell-curl-aeson/issues
Source repo head: git clone https://github.com/zouppen/haskell-curl-aeson.git
Uploaded by JoelLehtonen at 2022-03-31T01:06:02Z

Modules

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for curl-aeson-0.1.0.0

[back to package description]

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

In this example we fetch latest bid and ask values from a Bitcoin exchange using their public API:

{-# LANGUAGE OverloadedStrings #-}
import Control.Monad
import Data.Aeson
import Network.Curl.Aeson

ticker :: IO (Double,Double)
ticker = curlAesonGetWith p "https://bitcoin-central.net/api/v1/ticker/eur"
  where
    p (Object o) = do
      bid <- o .: "bid"
      ask <- o .: "ask"
      return (bid,ask)
    p _ = mzero

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.