module Network.IPFS.Client.DAG.Put.Types (API, Response (..)) where import Servant.API import Servant.Multipart import Network.IPFS.Prelude import Network.IPFS.CID.Types import qualified Network.IPFS.File.Form.Types as File type API = QueryParam' '[Required, Strict] "pin" Bool :> MultipartForm Tmp File.Form :> Post '[JSON] Response newtype Response = Response CID instance FromJSON Response where parseJSON :: Value -> Parser Response parseJSON = String -> (Object -> Parser Response) -> Value -> Parser Response forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "IPFS.DAG.Response" \Object obj -> do Object cidField <- Object obj Object -> Text -> Parser Object forall a. FromJSON a => Object -> Text -> Parser a .: Text "Cid" CID cid <- Object cidField Object -> Text -> Parser CID forall a. FromJSON a => Object -> Text -> Parser a .: Text "/" return $ CID -> Response Response CID cid