module Network.IPFS.DAG.Link.Types (Link (..)) where import Network.IPFS.Prelude import Network.IPFS.Types as IPFS import Data.Text as T data Link = Link { Link -> CID cid :: IPFS.CID , Link -> Name name :: IPFS.Name , Link -> Integer size :: Integer } deriving (Int -> Link -> ShowS [Link] -> ShowS Link -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Link] -> ShowS $cshowList :: [Link] -> ShowS show :: Link -> String $cshow :: Link -> String showsPrec :: Int -> Link -> ShowS $cshowsPrec :: Int -> Link -> ShowS Show, Link -> Link -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Link -> Link -> Bool $c/= :: Link -> Link -> Bool == :: Link -> Link -> Bool $c== :: Link -> Link -> Bool Eq, forall x. Rep Link x -> Link forall x. Link -> Rep Link x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Link x -> Link $cfrom :: forall x. Link -> Rep Link x Generic) instance ToJSON Link where toJSON :: Link -> Value toJSON (Link CID cid Name name Integer size) = Object -> Value Object [ (Key "Name", Text -> Value String forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text T.pack forall a b. (a -> b) -> a -> b <| Name -> String unName Name name) , (Key "Size", Scientific -> Value Number forall a b. (a -> b) -> a -> b <| forall a b. (Integral a, Num b) => a -> b fromIntegral Integer size) , (Key "Cid", Object -> Value Object [(Key "/", Text -> Value String forall a b. (a -> b) -> a -> b <| CID -> Text unaddress CID cid)]) ]