module Main where
-- base
import Control.Monad ((<=<))
-- HTTP
import Network.HTTP.Base (httpPackageVersion)
import Network.Browser
( Proxy(NoProxy), BrowserAction
, browse, setAllowRedirects, setMaxRedirects, setAuthorities
, setAllowBasicAuth, setMaxErrorRetries, setMaxPoolSize
, setMaxAuthAttempts, setProxy, setOutHandler, setUserAgent
)
-- either
import Control.Monad.Trans.Either (runEitherT)
-- text
import Data.Text (pack)
-- transformers
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Class (lift)
-- unordered-containers
import qualified Data.HashMap.Strict as HM
-- vector
import qualified Data.Vector as V
-- this package
import Cryptsy.API.Public
initBrowser :: BrowserAction t ()
initBrowser = do
setAllowRedirects True
setMaxRedirects $ Just 10
setAuthorities []
setAllowBasicAuth False
setMaxErrorRetries $ Just 0
setMaxPoolSize $ Just 2
setMaxAuthAttempts $ Just 0
setProxy NoProxy
setOutHandler . const $ return ()
setUserAgent $ "Network.Browser/" ++ httpPackageVersion
main :: IO ()
main = either print return <=< browse . runEitherT $ do
lift initBrowser
books <- orderData
liftIO . print . HM.size $ orderBooks (books :: OrderData)
omkts <- oldMarketData
liftIO . print . HM.size $ markets (omkts :: MarketData)
mkts <- marketData
liftIO . print . HM.size $ markets (mkts :: MarketData)
book <- singleOrderBook $ pack "113"
liftIO . print $ ( V.length $ obBuyOrders (book :: OrderBook)
, V.length $ obSellOrders book
)
market <- singleMarket $ pack "113"
liftIO . print $ ( V.length $ mktRecentTrades (market :: Market)
, V.length $ mktBuyOrders market
, V.length $ mktSellOrders market
)