packages feed

blockfrost-client-0.9.0.0: example/Main.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main
  where

import Blockfrost.Client hiding (NutLinkAPI(..))
import Control.Monad.IO.Class

main = do
  -- reads token from BLOCKFROST_TOKEN_PATH
  -- environment variable. It expects token
  -- prefixed with Blockfrost environment name
  -- e.g.: testnet-someTokenHash
  prj <- projectFromEnv
  res <- runBlockfrost prj $ do
    latestBlocks <- getLatestBlock
    (ers :: Either BlockfrostError [AccountReward]) <-
      tryError $ getAccountRewards "gonnaFail"
    
    allMempoolTxs <- 
      getMempoolTransactions prj def def
    
    if null allMempoolTxs 
    then return $ (latestBlocks, ers, allMempoolTxs, Nothing)
    else do let lastTxInMempool = TxHash . unTxHashObject $ last allMempoolTxs
            lastMempoolTx <- getMempoolTransaction prj lastTxInMempool
                
            return (latestBlocks, ers, allMempoolTxs, Just lastMempoolTx) 
    
  -- variant accepting @Paged@ and @SortOrder@ arguments
  -- getAccountRewards' "gonnaFail" (page 10) desc
  case res of 
    Left e -> print e
    Right ((latestBlocks, ers, allMempoolTxs, lastMempoolTx)) -> do 
      print "Latest blocks:"
      print latestBlocks
      putStrLn ""
      print "Account rewards (expected to error):"
      print ers
      putStrLn ""
      print "All mempool transactions (mempool potentially empty):"
      print allMempoolTxs
      putStrLn ""
      print "Last mempool transaction (if any):"
      print lastMempoolTx
      putStrLn ""

      case lastMempoolTx of 
        Nothing -> print "No mempool transactions found."
        Just mempoolTx -> do
          let inputs = _inputs mempoolTx
          if null inputs 
          then print "No mempool transactions found" -- Should be impossible
          else 
            do let address = Address . _address $ head inputs
               mempoolTxByAddress <- runBlockfrost prj $ getMempoolTransactionsByAddress prj address def def
               print "Mempool transactions by address:"
               print mempoolTxByAddress