packages feed

cryptsy-api-0.1: src/Main.hs

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
	                 )