Achieve 100% haddock coverage; do not inline CAFs that should be shared.
[haskell-cryptsy-api.git] / src / Cryptsy / API / Public / Market.hs
blob36ebbd05c8294dd12187715ed2d2da535bb2dabd
1 {-# LANGUAGE FlexibleContexts, ViewPatterns #-}
2 -- |Request for a single market by market id.
3 module Cryptsy.API.Public.Market
4 ( module Cryptsy.API.Public.Market
5 , module Cryptsy.API.Public.Types.Market
6 , module Cryptsy.API.Public.Types.Monad
8 where
10 -- text
11 import Data.Text (Text, unpack)
13 -- aeson
14 import Data.Aeson (FromJSON(..), withObject)
16 -- unordered-containers
17 import Data.HashMap.Strict (toList)
19 -- this package
20 import Cryptsy.API.Public.Internal
21 import Cryptsy.API.Public.Types.Market
22 import Cryptsy.API.Public.Types.Monad
24 -- |single market API request
25 singleMarket :: FromJSON (GMarket p q dt t)
26 => Text -- ^ marketid
27 -> PubCryptsy (GMarket p q dt t)
28 singleMarket (unpack -> reqMarket) = pubCryptsy marketURL $ onMarkets parseSingleMarket
29 where
30 marketURL = pubURL $ "singlemarketdata&marketid=" ++ reqMarket
31 parseSingleMarket = withObject dataStr $ \o ->
32 case toList o of
33 [] -> fail "No market returned."
34 [(_, v)] -> parseJSON v
35 _ -> fail "Multiple markets returned."