packages feed

ipfs-1.2.0.0: library/Network/IPFS/Client.hs

module Network.IPFS.Client
  ( API
  , add
  , cat
  , stat
  , pin
  , unpin
  ) where

import qualified RIO.ByteString.Lazy                             as Lazy
import           Servant
import           Servant.Client

import           Network.IPFS.Internal.Orphanage.ByteString.Lazy ()
import           Network.IPFS.Prelude                            hiding (object)

import           Network.IPFS.CID.Types
import qualified Network.IPFS.File.Types                         as File
import           Network.IPFS.Stat.Types

import qualified Network.IPFS.Client.Add                         as Add
import qualified Network.IPFS.Client.Cat                         as Cat
import qualified Network.IPFS.Client.Pin                         as Pin
import qualified Network.IPFS.Client.Stat                        as Stat

type API
  = "api"
  :> "v0"
  :> V0API

type V0API = "add"    :> Add.API
        :<|> "cat"    :> Cat.API
        :<|> "object" :> Stat.API
        :<|> "pin"    :> Pin.API

add   :: Lazy.ByteString -> ClientM CID
cat   :: CID             -> ClientM File.Serialized
stat  :: CID             -> ClientM Stat
pin   :: CID             -> ClientM Pin.Response
unpin :: CID -> Bool     -> ClientM Pin.Response

add :<|> cat
    :<|> stat
    :<|> pin
    :<|> unpin
    = client $ Proxy @API