web3-0.9.0.0: src/Network/Ipfs/Api/Swarm.hs
-- |
-- Module : Network.Ipfs.Api.Swarm
-- Copyright : Alexander Krupenkin 2016
-- License : BSD3
--
-- Maintainer : mail@akru.me
-- Stability : experimental
-- Portability : unknown
--
-- Api calls with `swarm` prefix.
--
module Network.Ipfs.Api.Swarm where
import Control.Monad.IO.Class (MonadIO)
import Data.Text (Text)
import Network.Ipfs.Api.Internal (_swarmConnect,
_swarmDisconnect,
_swarmFilterAdd,
_swarmFilterRm, _swarmFilters,
_swarmPeers)
import Network.Ipfs.Api.Internal.Call (call)
import Network.Ipfs.Api.Types (SwarmObj, SwarmPeersObj)
import Network.Ipfs.Client (IpfsT)
-- | List peers with open connections.
swarmPeers :: MonadIO m => IpfsT m SwarmPeersObj
swarmPeers = call _swarmPeers
-- | Open connection to a given address. 'peerId' has to be of the format - /ipfs/id
connect :: MonadIO m => Text -> IpfsT m SwarmObj
connect = call . _swarmConnect . Just
-- | Close connection to a given address. 'peerId' has to be of the format - /ipfs/id
disconnect :: MonadIO m => Text -> IpfsT m SwarmObj
disconnect = call . _swarmDisconnect . Just
-- | Manipulate address filters.
filters :: MonadIO m => IpfsT m SwarmObj
filters = call _swarmFilters
-- | Add an address filter. 'peerId' has to be of the format - /ip4/{IP addr of peer}/ipcidr/{ip network prefix}
filterAdd :: MonadIO m => Text -> IpfsT m SwarmObj
filterAdd = call . _swarmFilterAdd . Just
-- | Remove an address filter.
filterRm :: MonadIO m => Text -> IpfsT m SwarmObj
filterRm = call . _swarmFilterRm . Just