packages feed

bittrex-0.6.0.0: example/Main.hs

module Main where

import           Bittrex
import           Control.Monad
import           Data.Function      ((&))
import           Data.Maybe
import           Data.Text          (Text)
import qualified Data.Text.IO       as T
import           System.Environment (getEnv, lookupEnv)

main :: IO ()
main = do
  -- Get Bittrex API credentials

  homeDirectory <- getEnv "HOME"
  credentialFile <- fromMaybe (homeDirectory ++ "/.bittrex")
                    <$> lookupEnv "BITTREX_CREDENTIAL_FILE"
  [api, secret] <- lines <$> readFile credentialFile
  let keys = APIKeys api secret

  -- Define helper functions

  let putHeader x = putStrLn ("\ESC[1m" ++ x ++ "\ESC[0m")
  let printInd x = let indent = "    "
                       wrap line = indent ++ "\ESC[34m" ++ line ++ "\ESC[0m"
                       shown = unlines $ map wrap $ lines $ show x
                   in putStrLn shown

  -- Public API example

  putHeader "Markets"
  Right ms <- getMarkets
  forM_ ms (printInd . marketName)

  putHeader "Currencies"
  Right cs <- getCurrencies
  mapM_ printInd cs

  putHeader "Ticker for BTC-DOGE market"
  t <- getTicker (MarketName BTC_DOGE)
  printInd t

  putHeader "Summary of BTC-DOGE market"
  Right t <- getMarketSummary (MarketName BTC_DOGE)
  printInd t

  putHeader "Get market summaries"
  Right t <- getMarketSummaries
  printInd t

  putHeader "Order book sells for for BTC-DOGE market"
  book <- getOrderBookSells (MarketName BTC_DOGE)
  printInd book

  putHeader "Order book buys for for BTC-DOGE market"
  book <- getOrderBookBuys (MarketName BTC_DOGE)
  printInd book

  putHeader "Market history for BTC-DOGE"
  Right history <- getMarketHistory (MarketName BTC_DOGE)
  forM_ history printInd

  -- Market API example

  putHeader "Retrieve your open orders"
  Right openOrders <- getOpenOrders keys (MarketName BTC_DOGE)
  forM_ openOrders printInd

  -- Account API example

  putHeader "Check your balances (for all currencies)"
  Right balances <- getBalances keys
  forM_ balances printInd