8.9 KiB
Minio Haskell SDK API Reference
Initialize Minio Client object.
This SDK provides helpers to connect to play.minio.io (the public Minio Play server), the AWS S3 service, and to a locally hosted Minio server.
For Play, use
minioPlayCI :: ConnectInfo
minioPlayCI
For AWS S3, use
awsCI :: ConnectInfo
awsCI { connectAccesskey = "your-access-key"
, connectSecretkey = "your-secret-key"
}
For a local Minio server instance running at localhost:9000 with
"minio" and "minio123" as access key and secret key respectively, use
def :: ConnectInfo
def
For a minio server instance deployed with custom configuration, use
def :: ConnectInfo
def { connectHost = "host"
, connectPort = 5000
, connectAccessKey = "access-key"
, connectSecretKey = "secret-key"
, connectIsSecure = False
}
| Bucket operations | Object Operations |
|---|---|
makeBucket |
getObject |
removeBucket |
putObject |
listObjects |
fGetObject |
listIncompleteUploads |
fPutObject |
listIncompleteParts |
copyObject |
removeObject |
1. ConnectInfo smart constructors
2. Bucket operations
makeBucket :: Bucket -> Maybe Region -> Minio ()
Create a new bucket. If the region is not specified, the region
specified by ConnectInfo is used.
Parameters
In the expression makeBucket bucketName region the arguments are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
region |
Maybe Region | Region where the bucket is to be created. If not specified, default to the region in ConnectInfo. |
Example
{-# Language OverloadedStrings #-}
main :: IO ()
main = do
res <- runResourceT $ runMinio minioPlayCI $ do
makeBucket bucketName (Just "us-east-1")
case res of
Left err -> putStrLn $ "Failed to make bucket: " ++ (show res)
Right _ -> putStrLn $ "makeBucket successful."
removeBucket :: Bucket -> Minio ()
Remove a bucket. The bucket must be empty or an error will be thrown.
Parameters
In the expression removeBucket bucketName the arguments are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
Example
{-# Language OverloadedStrings #-}
main :: IO ()
main = do
res <- runResourceT $ runMinio minioPlayCI $ do
removeBucket "mybucket"
case res of
Left err -> putStrLn $ "Failed to remove bucket: " ++ (show res)
Right _ -> putStrLn $ "removeBucket successful."
listObjects :: Bucket -> Maybe Text -> Bool -> C.Producer Minio ObjectInfo
List objects in the given bucket.
Parameters
In the expression listObjects bucketName prefix recursive the
arguments are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
prefix |
Maybe Text | Optional prefix that listed objects should have |
recursive |
Bool | True indicates recursive style listing and False indicates directory style listing delimited by '/'. |
Return Value
| Return type | Description |
|---|---|
| C.Producer Minio ObjectInfo | A Conduit Producer of ObjectInfo values corresponding to each incomplete multipart upload |
ObjectInfo record type
| Field | Type | Description |
|---|---|---|
oiObject |
Object (alias for Text) |
Name of object |
oiModTime |
UTCTime | Last modified time of the object |
oiETag |
ETag (alias for Text) |
ETag of the object |
oiSize |
Int64 | Size of the object in bytes |
Example
import Data.Conduit ($$)
import Conduit.Combinators (sinkList)
main :: IO ()
main = do
let
bucket = "test"
-- Performs a recursive listing of all objects under bucket "test"
-- on play.minio.io.
res <- runResourceT $ runMinio minioPlayCI $ do
listObjects bucket Nothing True $$ sinkList
print res
listIncompleteUploads :: Bucket -> Maybe Prefix -> Bool -> C.Producer Minio UploadInfo
List incompletely uploaded objects.
Parameters
In the expression listIncompleteUploads bucketName prefix recursive
the parameters are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
prefix |
Maybe Text | Optional prefix that listed objects should have. |
recursive |
Bool | True indicates recursive style listing and Talse indicates directory style listing delimited by '/'. |
Return Value
| Return type | Description |
|---|---|
| C.Producer Minio UploadInfo | A Conduit Producer of UploadInfo values corresponding to each incomplete multipart upload |
UploadInfo record type
| Field | Type | Description |
|---|---|---|
uiKey |
Object | Name of incompletely uploaded object |
uiUploadId |
String | Upload ID of incompletely uploaded object |
<TODO> |
Size of incompletely uploaded object |
Example
import Data.Conduit ($$)
import Conduit.Combinators (sinkList)
main :: IO ()
main = do
let
bucket = "test"
-- Performs a recursive listing of all incompletely uploaded objects
-- under bucket "test" on play.minio.io.
res <- runResourceT $ runMinio minioPlayCI $ do
listIncompleteUploads bucket Nothing True $$ sinkList
print res
listIncompleteParts :: Bucket -> Object -> UploadId -> C.Producer Minio ObjectPartInfo
List parts of an ongoing multipart upload.
Parameters
In the expression listIncompleteParts bucketName objectName uploadId
the parameters are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
objectName |
Object (alias for Text) |
Name of the object |
uploadId |
UploadId (alias for Text) |
The identifier for the multipart upload |
Return Value
| Return type | Description |
|---|---|
| C.Producer Minio ObjectPartInfo | A Conduit Producer of ObjectPartInfo values corresponding to each completed part in the ongoing upload |
ObjectPartInfo record type
| Field | Type | Description |
|---|---|---|
opiNumber |
PartNumber (alias for Int16) |
Serial part number of the part |
opiETag |
ETag (alias for Text) |
The ETag entity of the part |
opiSize |
Int64 | Size of the part in the bytes |
opiModTime |
UTCTime | Last modified time |
Example
import Data.Conduit ($$)
import Conduit.Combinators (sinkList)
main :: IO ()
main = do
let
bucket = "test"
-- Lists the parts in an incompletely uploaded object identified by
-- bucket, object and upload ID.
res <- runResourceT $ runMinio minioPlayCI $ do
listIncompleteParts bucket "mpartObject" "xxxxx11111" $$ sinkList
print res
3. Object operations
getObject :: Bucket -> Object -> Minio (C.ResumableSource Minio ByteString)
Get an object from the service.
Parameters
In the expression getObject bucketName objectName the parameters
are:
| Param | Type | Description |
|---|---|---|
bucketName |
Bucket (alias for Text) |
Name of the bucket |
objectName |
Object (alias for Text) |
Name of the object |
Return Value
The return value can be incrementally read to process the contents of the object.
| Return type | Description |
|---|---|
| C.ResumableSource Minio ByteString | A Conduit ResumableSource of ByteString values. |
Example
import Data.Conduit ($$+-)
import Data.Conduit.Binary (sinkLbs)
main :: IO ()
main = do
let
bucket = "mybucket"
object = "myobject"
-- Lists the parts in an incompletely uploaded object identified by
-- bucket, object and upload ID.
res <- runResourceT $ runMinio minioPlayCI $ do
source <- getObject bucket object
src $$+- sinkLbs
-- the following the prints the contents of the object.
print res