65 lines
1.5 KiB
Haskell
65 lines
1.5 KiB
Haskell
module Network.Minio
|
|
(
|
|
|
|
ConnectInfo(..)
|
|
, connect
|
|
|
|
, Minio
|
|
, runMinio
|
|
|
|
-- * Error handling
|
|
-----------------------
|
|
-- | Data types representing various errors that may occur while working
|
|
-- with an object storage service.
|
|
, MinioErr(..)
|
|
, MErrV(..)
|
|
|
|
-- * Data Types
|
|
----------------
|
|
-- | Data types representing various object store concepts.
|
|
, Bucket
|
|
, Object
|
|
, BucketInfo(..)
|
|
, UploadId
|
|
|
|
-- * Bucket and Object Operations
|
|
---------------------------------
|
|
, getService
|
|
, getLocation
|
|
|
|
, fGetObject
|
|
, fPutObject
|
|
, ObjectData(..)
|
|
, putObject
|
|
, listObjects
|
|
, listIncompleteUploads
|
|
, listIncompleteParts
|
|
) where
|
|
|
|
{-
|
|
This module exports the high-level Minio API for object storage.
|
|
-}
|
|
|
|
import qualified Data.Conduit as C
|
|
import qualified Data.Conduit.Binary as CB
|
|
|
|
import Lib.Prelude
|
|
|
|
import Network.Minio.Data
|
|
import Network.Minio.ListOps
|
|
import Network.Minio.PutObject
|
|
import Network.Minio.S3API
|
|
|
|
-- | Fetch the object and write it to the given file safely. The
|
|
-- object is first written to a temporary file in the same directory
|
|
-- and then moved to the given path.
|
|
fGetObject :: Bucket -> Object -> FilePath -> Minio ()
|
|
fGetObject bucket object fp = do
|
|
(_, src) <- getObject bucket object [] []
|
|
src C.$$+- CB.sinkFileCautious fp
|
|
|
|
-- | Upload the given file to the given object.
|
|
fPutObject :: Bucket -> Object -> FilePath -> Minio ()
|
|
fPutObject bucket object f = void $ putObject bucket object $
|
|
ODFile f Nothing
|