module Network.Minio
(
CredentialValue (..),
credentialValueText,
AccessKey (..),
SecretKey (..),
SessionToken (..),
CredentialLoader,
fromAWSConfigFile,
fromAWSEnv,
fromMinioEnv,
findFirst,
ConnectInfo,
setRegion,
setCreds,
setCredsFrom,
isConnectInfoSecure,
disableTLSCertValidation,
MinioConn,
mkMinioConn,
minioPlayCI,
awsCI,
gcsCI,
STSAssumeRole (..),
STSAssumeRoleOptions (..),
defaultSTSAssumeRoleOptions,
requestSTSCredential,
setSTSCredential,
ExpiryTime (..),
STSCredentialProvider,
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.API
import Network.Minio.CopyObject
import Network.Minio.Credentials
import Network.Minio.Data
import Network.Minio.Errors
import Network.Minio.ListOps
import Network.Minio.PutObject
import Network.Minio.S3API
import Network.Minio.SelectAPI
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
forall (m :: * -> *) a r.
Monad m =>
ConduitT () a m () -> ConduitT a Void m r -> m r
C.connect (GetObjectResponse -> ConduitM () ByteString Minio ()
gorObjectStream GetObjectResponse
src) forall a b. (a -> b) -> a -> b
$ 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 =
forall (f :: * -> *) a. Functor f => f a -> f ()
void forall a b. (a -> b) -> a -> b
$ Bucket
-> Bucket -> PutObjectOptions -> ObjectData Minio -> Minio Bucket
putObjectInternal Bucket
bucket Bucket
object PutObjectOptions
opts forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *). FilePath -> Maybe Int64 -> ObjectData m
ODFile FilePath
f forall a. Maybe a
Nothing
putObject ::
Bucket ->
Object ->
C.ConduitM () ByteString Minio () ->
Maybe Int64 ->
PutObjectOptions ->
Minio ()
putObject :: Bucket
-> Bucket
-> ConduitM () ByteString Minio ()
-> Maybe Int64
-> PutObjectOptions
-> Minio ()
putObject Bucket
bucket Bucket
object ConduitM () ByteString Minio ()
src Maybe Int64
sizeMay PutObjectOptions
opts =
forall (f :: * -> *) a. Functor f => f a -> f ()
void forall a b. (a -> b) -> a -> b
$ Bucket
-> Bucket -> PutObjectOptions -> ObjectData Minio -> Minio Bucket
putObjectInternal Bucket
bucket Bucket
object PutObjectOptions
opts forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *).
ConduitM () ByteString m () -> Maybe Int64 -> ObjectData m
ODStream ConduitM () ByteString Minio ()
src Maybe Int64
sizeMay
copyObject :: DestinationInfo -> SourceInfo -> Minio ()
copyObject :: DestinationInfo -> SourceInfo -> Minio ()
copyObject DestinationInfo
dstInfo SourceInfo
srcInfo =
forall (f :: * -> *) a. Functor f => f a -> f ()
void 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 [] 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 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 <- forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks forall a b. (a -> b) -> a -> b
$ ConnectInfo -> Bucket
connectRegion forall b c a. (b -> c) -> (a -> b) -> a -> c
. MinioConn -> ConnectInfo
mcConnInfo) 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 <-
forall (m :: * -> *) r. Monad m => ConduitT () Void m r -> m r
C.runConduit forall a b. (a -> b) -> a -> b
$
Bucket -> Maybe Bucket -> Bool -> ConduitM () UploadInfo Minio ()
listIncompleteUploads Bucket
bucket (forall a. a -> Maybe a
Just Bucket
object) Bool
False
forall (m :: * -> *) a b c r.
Monad m =>
ConduitT a b m () -> ConduitT b c m r -> ConduitT a c m r
C..| forall (m :: * -> *) a o. Monad m => ConduitT a o m [a]
CC.sinkList
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 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [UploadInfo]
uploads)