module Network.Minio
(
Credentials (..),
Provider,
fromAWSConfigFile,
fromAWSEnv,
fromMinioEnv,
findFirst,
ConnectInfo,
setRegion,
setCreds,
setCredsFrom,
isConnectInfoSecure,
disableTLSCertValidation,
MinioConn,
mkMinioConn,
minioPlayCI,
awsCI,
gcsCI,
Minio,
runMinioWith,
runMinio,
runMinioResWith,
runMinioRes,
Bucket,
makeBucket,
removeBucket,
bucketExists,
Region,
getLocation,
BucketInfo (..),
listBuckets,
listObjects,
listObjectsV1,
ListItem (..),
ObjectInfo,
oiObject,
oiModTime,
oiETag,
oiSize,
oiUserMetadata,
oiMetadata,
listIncompleteUploads,
UploadId,
UploadInfo (..),
listIncompleteParts,
ObjectPartInfo (..),
getBucketNotification,
putBucketNotification,
removeAllBucketNotification,
Notification (..),
defaultNotification,
NotificationConfig (..),
Arn,
Event (..),
Filter (..),
defaultFilter,
FilterKey (..),
defaultFilterKey,
FilterRules (..),
defaultFilterRules,
FilterRule (..),
Object,
fGetObject,
fPutObject,
putObject,
PutObjectOptions,
defaultPutObjectOptions,
pooContentType,
pooContentEncoding,
pooContentDisposition,
pooContentLanguage,
pooCacheControl,
pooStorageClass,
pooUserMetadata,
pooNumThreads,
pooSSE,
getObject,
GetObjectOptions,
defaultGetObjectOptions,
gooRange,
gooIfMatch,
gooIfNoneMatch,
gooIfModifiedSince,
gooIfUnmodifiedSince,
gooSSECKey,
GetObjectResponse,
gorObjectInfo,
gorObjectStream,
copyObject,
SourceInfo,
defaultSourceInfo,
srcBucket,
srcObject,
srcRange,
srcIfMatch,
srcIfNoneMatch,
srcIfModifiedSince,
srcIfUnmodifiedSince,
DestinationInfo,
defaultDestinationInfo,
dstBucket,
dstObject,
statObject,
removeObject,
removeIncompleteUpload,
module Network.Minio.SelectAPI,
mkSSECKey,
SSECKey,
SSE (..),
presignedPutObjectUrl,
presignedGetObjectUrl,
presignedHeadObjectUrl,
UrlExpiry,
newPostPolicy,
presignedPostPolicy,
showPostPolicy,
PostPolicy,
PostPolicyError (..),
PostPolicyCondition,
ppCondBucket,
ppCondContentLengthRange,
ppCondContentType,
ppCondKey,
ppCondKeyStartsWith,
ppCondSuccessActionStatus,
MinioErr (..),
MErrV (..),
ServiceErr (..),
)
where
import qualified Data.Conduit as C
import qualified Data.Conduit.Binary as CB
import qualified Data.Conduit.Combinators as CC
import Network.Minio.CopyObject
import Network.Minio.Data
import Network.Minio.Errors
import Network.Minio.ListOps
import Network.Minio.PutObject
import Network.Minio.S3API
import Network.Minio.SelectAPI
import Network.Minio.Utils
listBuckets :: Minio [BucketInfo]
listBuckets :: Minio [BucketInfo]
listBuckets = Minio [BucketInfo]
getService
fGetObject :: Bucket -> Object -> FilePath -> GetObjectOptions -> Minio ()
fGetObject :: Bucket -> Bucket -> FilePath -> GetObjectOptions -> Minio ()
fGetObject Bucket
bucket Bucket
object FilePath
fp GetObjectOptions
opts = do
GetObjectResponse
src <- Bucket -> Bucket -> GetObjectOptions -> Minio GetObjectResponse
getObject Bucket
bucket Bucket
object GetObjectOptions
opts
ConduitT () ByteString Minio ()
-> ConduitT ByteString Void Minio () -> Minio ()
forall (m :: * -> *) a r.
Monad m =>
ConduitT () a m () -> ConduitT a Void m r -> m r
C.connect (GetObjectResponse -> ConduitT () ByteString Minio ()
gorObjectStream GetObjectResponse
src) (ConduitT ByteString Void Minio () -> Minio ())
-> ConduitT ByteString Void Minio () -> Minio ()
forall a b. (a -> b) -> a -> b
$ FilePath -> ConduitT ByteString Void Minio ()
forall (m :: * -> *) o.
MonadResource m =>
FilePath -> ConduitM ByteString o m ()
CB.sinkFileCautious FilePath
fp
fPutObject ::
Bucket ->
Object ->
FilePath ->
PutObjectOptions ->
Minio ()
fPutObject :: Bucket -> Bucket -> FilePath -> PutObjectOptions -> Minio ()
fPutObject Bucket
bucket Bucket
object FilePath
f PutObjectOptions
opts =
Minio Bucket -> Minio ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Minio Bucket -> Minio ()) -> Minio Bucket -> Minio ()
forall a b. (a -> b) -> a -> b
$ Bucket
-> Bucket -> PutObjectOptions -> ObjectData Minio -> Minio Bucket
putObjectInternal Bucket
bucket Bucket
object PutObjectOptions
opts (ObjectData Minio -> Minio Bucket)
-> ObjectData Minio -> Minio Bucket
forall a b. (a -> b) -> a -> b
$ FilePath -> Maybe Int64 -> ObjectData Minio
forall (m :: * -> *). FilePath -> Maybe Int64 -> ObjectData m
ODFile FilePath
f Maybe Int64
forall a. Maybe a
Nothing
putObject ::
Bucket ->
Object ->
C.ConduitM () ByteString Minio () ->
Maybe Int64 ->
PutObjectOptions ->
Minio ()
putObject :: Bucket
-> Bucket
-> ConduitT () ByteString Minio ()
-> Maybe Int64
-> PutObjectOptions
-> Minio ()
putObject Bucket
bucket Bucket
object ConduitT () ByteString Minio ()
src Maybe Int64
sizeMay PutObjectOptions
opts =
Minio Bucket -> Minio ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Minio Bucket -> Minio ()) -> Minio Bucket -> Minio ()
forall a b. (a -> b) -> a -> b
$ Bucket
-> Bucket -> PutObjectOptions -> ObjectData Minio -> Minio Bucket
putObjectInternal Bucket
bucket Bucket
object PutObjectOptions
opts (ObjectData Minio -> Minio Bucket)
-> ObjectData Minio -> Minio Bucket
forall a b. (a -> b) -> a -> b
$ ConduitT () ByteString Minio () -> Maybe Int64 -> ObjectData Minio
forall (m :: * -> *).
ConduitM () ByteString m () -> Maybe Int64 -> ObjectData m
ODStream ConduitT () ByteString Minio ()
src Maybe Int64
sizeMay
copyObject :: DestinationInfo -> SourceInfo -> Minio ()
copyObject :: DestinationInfo -> SourceInfo -> Minio ()
copyObject DestinationInfo
dstInfo SourceInfo
srcInfo =
Minio Bucket -> Minio ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Minio Bucket -> Minio ()) -> Minio Bucket -> Minio ()
forall a b. (a -> b) -> a -> b
$
Bucket -> Bucket -> SourceInfo -> Minio Bucket
copyObjectInternal
(DestinationInfo -> Bucket
dstBucket DestinationInfo
dstInfo)
(DestinationInfo -> Bucket
dstObject DestinationInfo
dstInfo)
SourceInfo
srcInfo
removeObject :: Bucket -> Object -> Minio ()
removeObject :: Bucket -> Bucket -> Minio ()
removeObject = Bucket -> Bucket -> Minio ()
deleteObject
getObject ::
Bucket ->
Object ->
GetObjectOptions ->
Minio GetObjectResponse
getObject :: Bucket -> Bucket -> GetObjectOptions -> Minio GetObjectResponse
getObject Bucket
bucket Bucket
object GetObjectOptions
opts =
Bucket -> Bucket -> Query -> [Header] -> Minio GetObjectResponse
getObject' Bucket
bucket Bucket
object [] ([Header] -> Minio GetObjectResponse)
-> [Header] -> Minio GetObjectResponse
forall a b. (a -> b) -> a -> b
$ GetObjectOptions -> [Header]
gooToHeaders GetObjectOptions
opts
statObject :: Bucket -> Object -> GetObjectOptions -> Minio ObjectInfo
statObject :: Bucket -> Bucket -> GetObjectOptions -> Minio ObjectInfo
statObject Bucket
b Bucket
o GetObjectOptions
opts = Bucket -> Bucket -> [Header] -> Minio ObjectInfo
headObject Bucket
b Bucket
o ([Header] -> Minio ObjectInfo) -> [Header] -> Minio ObjectInfo
forall a b. (a -> b) -> a -> b
$ GetObjectOptions -> [Header]
gooToHeaders GetObjectOptions
opts
makeBucket :: Bucket -> Maybe Region -> Minio ()
makeBucket :: Bucket -> Maybe Bucket -> Minio ()
makeBucket Bucket
bucket Maybe Bucket
regionMay = do
Bucket
region <- Minio Bucket
-> (Bucket -> Minio Bucket) -> Maybe Bucket -> Minio Bucket
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ((MinioConn -> Bucket) -> Minio Bucket
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks ((MinioConn -> Bucket) -> Minio Bucket)
-> (MinioConn -> Bucket) -> Minio Bucket
forall a b. (a -> b) -> a -> b
$ ConnectInfo -> Bucket
connectRegion (ConnectInfo -> Bucket)
-> (MinioConn -> ConnectInfo) -> MinioConn -> Bucket
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MinioConn -> ConnectInfo
mcConnInfo) Bucket -> Minio Bucket
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Bucket
regionMay
Bucket -> Bucket -> Minio ()
putBucket Bucket
bucket Bucket
region
Bucket -> Bucket -> Minio ()
addToRegionCache Bucket
bucket Bucket
region
removeBucket :: Bucket -> Minio ()
removeBucket :: Bucket -> Minio ()
removeBucket Bucket
bucket = do
Bucket -> Minio ()
deleteBucket Bucket
bucket
Bucket -> Minio ()
deleteFromRegionCache Bucket
bucket
bucketExists :: Bucket -> Minio Bool
bucketExists :: Bucket -> Minio Bool
bucketExists = Bucket -> Minio Bool
headBucket
removeIncompleteUpload :: Bucket -> Object -> Minio ()
removeIncompleteUpload :: Bucket -> Bucket -> Minio ()
removeIncompleteUpload Bucket
bucket Bucket
object = do
[UploadInfo]
uploads <-
ConduitT () Void Minio [UploadInfo] -> Minio [UploadInfo]
forall (m :: * -> *) r. Monad m => ConduitT () Void m r -> m r
C.runConduit (ConduitT () Void Minio [UploadInfo] -> Minio [UploadInfo])
-> ConduitT () Void Minio [UploadInfo] -> Minio [UploadInfo]
forall a b. (a -> b) -> a -> b
$
Bucket -> Maybe Bucket -> Bool -> ConduitM () UploadInfo Minio ()
listIncompleteUploads Bucket
bucket (Bucket -> Maybe Bucket
forall a. a -> Maybe a
Just Bucket
object) Bool
False
ConduitM () UploadInfo Minio ()
-> ConduitM UploadInfo Void Minio [UploadInfo]
-> ConduitT () Void Minio [UploadInfo]
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
C..| ConduitM UploadInfo Void Minio [UploadInfo]
forall (m :: * -> *) a o. Monad m => ConduitT a o m [a]
CC.sinkList
(Bucket -> Minio ()) -> [Bucket] -> Minio ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (Bucket -> Bucket -> Bucket -> Minio ()
abortMultipartUpload Bucket
bucket Bucket
object) (UploadInfo -> Bucket
uiUploadId (UploadInfo -> Bucket) -> [UploadInfo] -> [Bucket]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [UploadInfo]
uploads)