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
11 import Data
.Text
(Text
, unpack
)
14 import Data
.Aeson
(FromJSON
(..), withObject
)
16 -- unordered-containers
17 import Data
.HashMap
.Strict
(toList
)
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
)
27 -> PubCryptsy
(GMarket p q dt t
)
28 singleMarket
(unpack
-> reqMarket
) = pubCryptsy marketURL
$ onMarkets parseSingleMarket
30 marketURL
= pubURL
$ "singlemarketdata&marketid=" ++ reqMarket
31 parseSingleMarket
= withObject dataStr
$ \o
->
33 [] -> fail "No market returned."
34 [(_
, v
)] -> parseJSON v
35 _
-> fail "Multiple markets returned."