{-# OPTIONS_GHC -Wno-type-defaults #-}
module Test.Examples.Bip (
examples,
) where
import Data.Aeson (eitherDecodeFileStrict)
import Data.Text (Text)
import Haskoin.Block (BlockHeight)
import Bitcoin.CompactFilter (filterHeaderFromHex)
import Paths_bitcoin_compact_filters (getDataFileName)
import Test.Util (
Example (..),
decodeFromHex,
parseHex,
)
examples :: IO [Example]
examples =
getDataFileName "examples/testnet-19.json"
>>= eitherDecodeFileStrict
>>= either error return . (>>= traverse interpretRawVector)
interpretRawVector ::
(BlockHeight, Text, Text, [Text], Text, Text, Text, Text) ->
Either String Example
interpretRawVector (n, h, b, ss, ph, f, fh, _) =
Example n <$> decodeFromHex h
<*> decodeFromHex b
<*> traverse parseHex ss
<*> decodeFromHex f
<*> filterHeaderFromHex ph
<*> filterHeaderFromHex fh