packages feed

ipfs 1.0.3 → 1.1.0

raw patch · 9 files changed

+110/−16 lines, 9 files

Files

README.md view
@@ -1,5 +1,3 @@-![](https://github.com/fission-suite/PROJECTNAME/raw/master/assets/logo.png?sanitize=true)- # ipfs-haskell  [![Build Status](https://travis-ci.org/fission-suite/PROJECTNAME.svg?branch=master)](https://travis-ci.org/fission-suite/ipfs-haskell)
ipfs.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 9ed6b01b56d1d0c1aa8f9fe456f538e8fe6bec8bc9bad95f54741a0b89025112+-- hash: 284ab00afa21672d9c0d28245f1677069ac516cab3572cffcbc7dd5a92867875  name:           ipfs-version:        1.0.3+version:        1.1.0 synopsis:       Access IPFS locally and remotely description:    Interact with the IPFS network by shelling out to a local IPFS node or communicating via the HTTP interface of a remote IPFS node. category:       Network@@ -37,6 +37,7 @@       Network.IPFS.Add       Network.IPFS.Add.Error       Network.IPFS.BinPath.Types+      Network.IPFS.Bytes.Types       Network.IPFS.CID.Types       Network.IPFS.Client       Network.IPFS.Client.Add@@ -44,6 +45,7 @@       Network.IPFS.Client.Error.Types       Network.IPFS.Client.Param       Network.IPFS.Client.Pin+      Network.IPFS.Client.Stat       Network.IPFS.DAG       Network.IPFS.DAG.Link       Network.IPFS.DAG.Link.Types@@ -74,6 +76,7 @@       Network.IPFS.SparseTree       Network.IPFS.SparseTree.Types       Network.IPFS.Stat+      Network.IPFS.Stat.Types       Network.IPFS.Timeout.Types       Network.IPFS.Types       Network.IPFS.URL.Types
+ library/Network/IPFS/Bytes/Types.hs view
@@ -0,0 +1,13 @@+module Network.IPFS.Bytes.Types (Bytes(..)) where++import           Network.IPFS.Prelude++newtype Bytes = Bytes { unBytes :: Natural }+  deriving newtype ( Eq+                   , Show+                   )++instance FromJSON Bytes where+  parseJSON val = do+    nat <- parseJSON val+    return <| Bytes nat
library/Network/IPFS/Client.hs view
@@ -2,6 +2,7 @@   ( API   , add   , cat+  , stat   , pin   , unpin   ) where@@ -15,25 +16,31 @@  import qualified Network.IPFS.File.Types      as File import           Network.IPFS.CID.Types+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.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-        :<|> "pin" :> Pin.API+type V0API = "add"  :> Add.API+        :<|> "cat"  :> Cat.API+        :<|> "stat" :> Stat.API+        :<|> "pin"  :> Pin.API  add   :: Lazy.ByteString -> ClientM CID cat   :: Text            -> ClientM File.Serialized+stat  :: Text            -> ClientM Stat pin   :: Text            -> ClientM Pin.Response unpin :: Text -> Bool    -> ClientM Pin.Response  add :<|> cat+    :<|> stat      :<|> pin-    :<|> unpin = client <| Proxy @API+    :<|> unpin +    = client <| Proxy @API
+ library/Network/IPFS/Client/Stat.hs view
@@ -0,0 +1,10 @@+module Network.IPFS.Client.Stat (API) where++import Servant++import           Network.IPFS.Stat.Types+import qualified Network.IPFS.Client.Param as Param++type API = "stat"+        :> Param.CID+        :> Get '[JSON] Stat
library/Network/IPFS/Remote/Class.hs view
@@ -3,6 +3,7 @@   , runRemote   , ipfsAdd   , ipfsCat+  , ipfsStat   , ipfsPin   , ipfsUnpin   ) where@@ -18,15 +19,18 @@ import qualified Network.IPFS.Client.Pin as Pin import qualified Network.IPFS.File.Types      as File + class MonadIO m => MonadRemoteIPFS m where   runRemote :: ClientM a       -> m (Either ClientError a)   ipfsAdd   :: Lazy.ByteString -> m (Either ClientError CID)   ipfsCat   :: CID             -> m (Either ClientError File.Serialized)+  ipfsStat  :: CID             -> m (Either ClientError Stat)   ipfsPin   :: CID             -> m (Either ClientError Pin.Response)   ipfsUnpin :: CID -> Bool     -> m (Either ClientError Pin.Response)    -- defaults   ipfsAdd raw                   = runRemote <| IPFS.Client.add raw-  ipfsCat   (CID cid)           = runRemote <| IPFS.Client.cat cid-  ipfsPin   (CID cid)           = runRemote <| IPFS.Client.pin cid+  ipfsCat (CID cid)             = runRemote <| IPFS.Client.cat cid+  ipfsStat (CID cid)            = runRemote <| IPFS.Client.stat cid+  ipfsPin (CID cid)             = runRemote <| IPFS.Client.pin cid   ipfsUnpin (CID cid) recursive = runRemote <| IPFS.Client.unpin cid recursive
library/Network/IPFS/Stat.hs view
@@ -1,4 +1,9 @@-module Network.IPFS.Stat (getSize) where+module Network.IPFS.Stat +  ( getStatRemote+  , getSizeRemote+  , getSize+  , module Network.IPFS.Stat.Types+  ) where  import           Data.ByteString.Lazy.Char8 as CL import           Data.List as List@@ -7,11 +12,36 @@  import           Network.IPFS.Prelude import           Network.IPFS.Local.Class   as IPFS+import           Network.IPFS.Remote.Class  as Remote import qualified Network.IPFS.Internal.UTF8 as UTF8 -import           Network.IPFS.Get.Error as IPFS.Get+import           Network.IPFS.Get.Error     as IPFS.Get import qualified Network.IPFS.Process.Error as Process-import           Network.IPFS.Types     as IPFS++import           Network.IPFS.Types as IPFS+import           Network.IPFS.Stat.Types +import           Network.IPFS.Bytes.Types ++getStatRemote :: +     MonadRemoteIPFS m+  => IPFS.CID +  -> m (Either IPFS.Get.Error Stat)+getStatRemote cid = +  Remote.ipfsStat cid >>= \case+    Left err -> +      return . Left . UnexpectedOutput <| UTF8.textShow err++    Right stat -> +      return <| Right stat++getSizeRemote :: +     MonadRemoteIPFS m+  => IPFS.CID +  -> m (Either IPFS.Get.Error Bytes)+getSizeRemote cid = +  getStatRemote cid >>= \case+    Left err -> return <| Left err+    Right stat -> return . Right <| cumulativeSize stat  getSize ::   MonadLocalIPFS m
+ library/Network/IPFS/Stat/Types.hs view
@@ -0,0 +1,25 @@+module Network.IPFS.Stat.Types (Stat(..)) where++import Network.IPFS.Prelude+import Network.IPFS.Bytes.Types+++data Stat = Stat +  { blockSize      :: Bytes+  , cumulativeSize :: Bytes+  , dataSize       :: Bytes+  , hash           :: Text+  , linksSize      :: Bytes+  , numLinks       :: Natural+  }++instance FromJSON Stat where+  parseJSON = withObject "Stat" \obj -> do+    blockSize      <- obj .: "BlockSize"+    cumulativeSize <- obj .: "CumulativeSize"+    dataSize       <- obj .: "DataSize"+    hash           <- obj .: "Hash"+    linksSize      <- obj .: "LinksSize"+    numLinks       <- obj .: "NumLinks"++    return Stat {..}
library/Network/IPFS/Types.hs view
@@ -16,6 +16,8 @@   , Ignored   , Gateway (..)   , ErrorBody (..)+  , Stat (..)+  , Bytes (..)   ) where  import Network.IPFS.BinPath.Types@@ -30,3 +32,5 @@ import Network.IPFS.Ignored.Types import Network.IPFS.Gateway.Types import Network.IPFS.Client.Error.Types+import Network.IPFS.Stat.Types+import Network.IPFS.Bytes.Types