blockfrost-api-0.1.0.0: src/Blockfrost/Types/Cardano/Metadata.hs
-- | Transaction metadata
module Blockfrost.Types.Cardano.Metadata
( TxMeta (..)
, TxMetaJSON (..)
, TxMetaCBOR (..)
) where
import Data.Aeson (Value, object, (.=))
import Data.Text (Text)
import Deriving.Aeson
import Servant.Docs (ToSample (..), samples)
import Blockfrost.Types.Shared
-- | Transaction metadata label in use
data TxMeta = TxMeta
{ _txMetaLabel :: Text -- ^ Metadata label
, _txMetaCip10 :: Maybe Text -- ^ CIP10 defined description
, _txMetaCount :: Quantity -- ^ The count of metadata entries with a specific label
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_txMeta", CamelToSnake]] TxMeta
instance ToSample TxMeta where
toSamples = pure $ samples
[ TxMeta "1990" Nothing 1
, TxMeta "1967" (Just "nut.link metadata oracles registry") 3
, TxMeta "1968" (Just "nut.link metadata oracles data points") 16321
]
-- | Transaction metadata content in JSON
data TxMetaJSON = TxMetaJSON
{ _txMetaJSONTxHash :: Text -- ^ Transaction hash that contains the specific metadata
, _txMetaJSONJSONMetadata :: Maybe Value -- ^ Content of the JSON metadata
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_txMetaJSON", CamelToSnake]] TxMetaJSON
instance ToSample TxMetaJSON where
toSamples =
let oracleMeta val =
object [
"ADAUSD" .=
[ object [ "value" .= (val :: Text)
, "source" .= ("ergoOracles" :: Text) ]
]
]
in pure $ samples
[ TxMetaJSON
"257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8"
(Just $ oracleMeta "0.10409800535729975")
, TxMetaJSON
"e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c"
(Just $ oracleMeta "0.15409850555139935")
, TxMetaJSON
"4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be"
Nothing
]
-- | Transaction metadata content in CBOR
data TxMetaCBOR = TxMetaCBOR
{ _txMetaCBORTxHash :: Text -- ^ Transaction hash that contains the specific metadata
, _txMetaCBORCBORMetadata :: Maybe Text -- ^ Content of the CBOR metadata
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_txMetaCBOR", CamelToSnake]] TxMetaCBOR
instance ToSample TxMetaCBOR where
toSamples = pure $ samples
[ TxMetaCBOR
"257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8"
Nothing
, TxMetaCBOR
"e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c"
Nothing
, TxMetaCBOR
"4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be"
(Just "\\xa100a16b436f6d62696e6174696f6e8601010101010c")
]