Bip70.hs
{-# LANGUAGE TemplateHaskell #-}
module Aftok.Currency.Bitcoin.Bip70
( module Bippy.Proto,
protoBase64,
fromBase64Proto,
)
where
import Bippy.Proto
import qualified Data.ByteString.Base64 as B64
import Data.ProtocolBuffers (Decode, Encode, decodeMessage, encodeMessage)
import Data.Serialize.Get (runGet)
import Data.Serialize.Put (runPut)
protoBase64 :: Encode a => a -> Text
protoBase64 = B64.encodeBase64 . runPut . encodeMessage
fromBase64Proto :: Decode a => Text -> Either Text a
fromBase64Proto t = (first toText . runGet decodeMessage) <=< B64.decodeBase64 $ encodeUtf8 t