blockfrost-api-0.1.0.0: src/Blockfrost/Types/IPFS.hs
-- | Types for IPFS servics
module Blockfrost.Types.IPFS
( IPFSAdd (..)
, IPFSPinChange (..)
, IPFSPin (..)
, PinState (..)
, IPFSData (..)
) where
import Blockfrost.Types.Shared
import Data.Aeson
import Data.ByteString.Lazy (ByteString)
import Data.Text (Text)
import Deriving.Aeson
import Servant.API
import Servant.Docs (ToSample (..), singleSample)
-- | IPFS Add response
data IPFSAdd = IPFSAdd
{ _ipfsAddName :: Text -- ^ Name of the file
, _ipfsAddIpfsHash :: Text -- ^ IPFS hash of the file
, _ipfsAddSize :: Quantity -- ^ Size of the IPFS node
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_ipfsAdd", CamelToSnake]] IPFSAdd
instance ToSample IPFSAdd where
toSamples = pure $ singleSample $
IPFSAdd
"README.md"
"QmZbHqiCxKEVX7QfijzJTkZiSi3WEVTcvANgNAWzDYgZDr"
125297
-- | State of the pinned object,
-- which is @Queued@ when we are retriving object.
--
-- If this is successful the state is changed to @Pinned@ or @Failed@ if not.
-- The state @Gc@ means the pinned item has been garbage collected
-- due to account being over storage quota or after it has been
-- moved to @Unpinned@ state by removing the object pin.
data PinState = Queued | Pinned | Unpinned | Failed | Gc
deriving (Eq, Show, Ord, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[ConstructorTagModifier '[ToLower]] PinState
-- | IPFS Pin Add response
data IPFSPinChange = IPFSPinChange
{ _ipfsPinChangeIpfsHash :: Text -- ^ IPFS hash of pinned object
, _ipfsPinChangeState :: PinState -- ^ State of the pin action
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_ipfsPinChange", CamelToSnake]] IPFSPinChange
instance ToSample IPFSPinChange where
toSamples = pure $ singleSample $
IPFSPinChange
"QmPojRfAXYAXV92Dof7gtSgaVuxEk64xx9CKvprqu9VwA8"
Queued
-- | IPFS Pin information
data IPFSPin = IPFSPin
{ _ipfsPinTimeCreated :: POSIXTime -- ^ Creation time of the IPFS object on our backends
, _ipfsPinTimePinned :: POSIXTime -- ^ Pin time of the IPFS object on our backends
, _ipfsPinIpfsHash :: Text -- ^ IPFS hash of the pinned object
, _ipfsPinSize :: Quantity -- ^ Size of the IPFS node
, _ipfsPinState :: PinState -- ^ State of the pinned object
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_ipfsPin", CamelToSnake]] IPFSPin
instance ToSample IPFSPin where
toSamples = pure $ singleSample $
IPFSPin
{ _ipfsPinTimeCreated = 1615551024
, _ipfsPinTimePinned = 1615551024
, _ipfsPinIpfsHash = "QmdVMnULrY95mth2XkwjxDtMHvzuzmvUPTotKE1tgqKbCx"
, _ipfsPinSize = 1615551024
, _ipfsPinState = Pinned
}
newtype IPFSData = IPFSData ByteString
deriving (Show, Eq, Generic)
instance ToSample IPFSData where
toSamples = pure $ singleSample $ IPFSData "sample ipfs bytestring"
instance MimeRender OctetStream IPFSData where
mimeRender _ (IPFSData cs) = cs
instance MimeUnrender OctetStream IPFSData where
mimeUnrender _ lbs = pure $ IPFSData lbs
instance MimeRender PlainText IPFSData where
mimeRender _ (IPFSData cs) = cs
instance MimeUnrender PlainText IPFSData where
mimeUnrender _ lbs = pure $ IPFSData lbs