minio-hs-1.2.0: A Minio Haskell Library for Amazon S3 compatible cloud storage.

Safe HaskellNone
LanguageHaskell2010

Network.Minio

Contents

Synopsis

Credentials

data Credentials Source #

Constructors

Credentials 
Instances
Eq Credentials Source # 
Instance details

Defined in Network.Minio.Data

Show Credentials Source # 
Instance details

Defined in Network.Minio.Data

type Provider = IO (Maybe Credentials) Source #

A Provider is an action that may return Credentials

findFirst :: [Provider] -> Provider Source #

Combines the given list of providers, by calling each one in order until Credentials are found.

Connecting to object storage

data ConnectInfo Source #

Connection Info data type. To create a ConnectInfo value, use one of the provided smart constructors or override fields of the Default instance.

Instances
Eq ConnectInfo Source # 
Instance details

Defined in Network.Minio.Data

Show ConnectInfo Source # 
Instance details

Defined in Network.Minio.Data

IsString ConnectInfo Source # 
Instance details

Defined in Network.Minio.Data

data MinioConn Source #

MinioConn holds connection info and a connection pool

Instances
MonadReader MinioConn Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

ask :: Minio MinioConn #

local :: (MinioConn -> MinioConn) -> Minio a -> Minio a #

reader :: (MinioConn -> a) -> Minio a #

Connection helpers

minioPlayCI :: ConnectInfo Source #

Minio Play Server ConnectInfo. Credentials are already filled in.

awsCI :: ConnectInfo Source #

Default AWS ConnectInfo. Connects to "us-east-1". Credentials should be supplied before use.

gcsCI :: ConnectInfo Source #

Default GCS ConnectInfo. Works only for "Simple Migration" use-case with interoperability mode enabled on GCP console. For more information - https://cloud.google.com/storage/docs/migrating Credentials should be supplied before use.

Minio Monad

The Minio monad provides connection-reuse, bucket-location caching, resource management and simpler error handling functionality. All actions on object storage are performed within this Monad.

data Minio a Source #

Instances
Monad Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

(>>=) :: Minio a -> (a -> Minio b) -> Minio b #

(>>) :: Minio a -> Minio b -> Minio b #

return :: a -> Minio a #

fail :: String -> Minio a #

Functor Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

fmap :: (a -> b) -> Minio a -> Minio b #

(<$) :: a -> Minio b -> Minio a #

Applicative Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

pure :: a -> Minio a #

(<*>) :: Minio (a -> b) -> Minio a -> Minio b #

liftA2 :: (a -> b -> c) -> Minio a -> Minio b -> Minio c #

(*>) :: Minio a -> Minio b -> Minio b #

(<*) :: Minio a -> Minio b -> Minio a #

MonadIO Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

liftIO :: IO a -> Minio a #

MonadUnliftIO Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

askUnliftIO :: Minio (UnliftIO Minio) #

withRunInIO :: ((forall a. Minio a -> IO a) -> IO b) -> Minio b #

MonadResource Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

liftResourceT :: ResourceT IO a -> Minio a #

MonadReader MinioConn Minio Source # 
Instance details

Defined in Network.Minio.Data

Methods

ask :: Minio MinioConn #

local :: (MinioConn -> MinioConn) -> Minio a -> Minio a #

reader :: (MinioConn -> a) -> Minio a #

runMinio :: ConnectInfo -> Minio a -> IO (Either MinioErr a) Source #

Run the Minio action and return the result or an error.

Bucket Operations

Creation, removal and querying

type Bucket = Text Source #

Represents a bucket in the object store

makeBucket :: Bucket -> Maybe Region -> Minio () Source #

Creates a new bucket in the object store. The Region can be optionally specified. If not specified, it will use the region configured in ConnectInfo, which is by default, the US Standard Region.

removeBucket :: Bucket -> Minio () Source #

Removes a bucket from the object store.

bucketExists :: Bucket -> Minio Bool Source #

Query the object store if a given bucket is present.

type Region = Text Source #

Represents a region TODO: This could be a Sum Type with all defined regions for AWS.

getLocation :: Bucket -> Minio Region Source #

Fetch bucket location (region)

Listing

data BucketInfo Source #

BucketInfo returned for list buckets call

Constructors

BucketInfo 
Instances
Eq BucketInfo Source # 
Instance details

Defined in Network.Minio.Data

Show BucketInfo Source # 
Instance details

Defined in Network.Minio.Data

listBuckets :: Minio [BucketInfo] Source #

Lists buckets.

Object info type represents object metadata information.

data ObjectInfo Source #

Represents information about an object.

Instances
Eq ObjectInfo Source # 
Instance details

Defined in Network.Minio.Data

Show ObjectInfo Source # 
Instance details

Defined in Network.Minio.Data

listObjects :: Bucket -> Maybe Text -> Bool -> ConduitM () ObjectInfo Minio () Source #

List objects in a bucket matching the given prefix. If recurse is set to True objects matching prefix are recursively listed.

listObjectsV1 :: Bucket -> Maybe Text -> Bool -> ConduitM () ObjectInfo Minio () Source #

List objects in a bucket matching the given prefix. If recurse is set to True objects matching prefix are recursively listed.

type UploadId = Text Source #

A type alias to represent an upload-id for multipart upload

data UploadInfo Source #

Represents information about a multipart upload.

Instances
Eq UploadInfo Source # 
Instance details

Defined in Network.Minio.Data

Show UploadInfo Source # 
Instance details

Defined in Network.Minio.Data

listIncompleteUploads :: Bucket -> Maybe Text -> Bool -> ConduitM () UploadInfo Minio () Source #

List incomplete uploads in a bucket matching the given prefix. If recurse is set to True incomplete uploads for the given prefix are recursively listed.

data ObjectPartInfo Source #

Represents information about an object part in an ongoing multipart upload.

listIncompleteParts :: Bucket -> Object -> UploadId -> ConduitM () ObjectPartInfo Minio () Source #

List object parts of an ongoing multipart upload for given bucket, object and uploadId.

Bucket Notifications

data Notification Source #

A data-type to represent bucket notification configuration. It is a collection of queue, topic or lambda function configurations. The structure of the types follow closely the XML representation described at https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html

Instances
Eq Notification Source # 
Instance details

Defined in Network.Minio.Data

Show Notification Source # 
Instance details

Defined in Network.Minio.Data

data NotificationConfig Source #

A data-type representing the configuration for a particular notification system. It could represent a Queue, Topic or Lambda Function configuration.

Constructors

NotificationConfig 

Fields

type Arn = Text Source #

data Filter Source #

Constructors

Filter 

Fields

Instances
Eq Filter Source # 
Instance details

Defined in Network.Minio.Data

Methods

(==) :: Filter -> Filter -> Bool #

(/=) :: Filter -> Filter -> Bool #

Show Filter Source # 
Instance details

Defined in Network.Minio.Data

data FilterKey Source #

Constructors

FilterKey 

Fields

Instances
Eq FilterKey Source # 
Instance details

Defined in Network.Minio.Data

Show FilterKey Source # 
Instance details

Defined in Network.Minio.Data

data FilterRules Source #

Constructors

FilterRules 
Instances
Eq FilterRules Source # 
Instance details

Defined in Network.Minio.Data

Show FilterRules Source # 
Instance details

Defined in Network.Minio.Data

data FilterRule Source #

A filter rule that can act based on the suffix or prefix of an object. As an example, let's create two filter rules:

let suffixRule = FilterRule "suffix" ".jpg"
let prefixRule = FilterRule "prefix" "images/"

The suffixRule restricts the notification to be triggered only for objects having a suffix of ".jpg", and the prefixRule restricts it to objects having a prefix of "images/".

Constructors

FilterRule 

Fields

Instances
Eq FilterRule Source # 
Instance details

Defined in Network.Minio.Data

Show FilterRule Source # 
Instance details

Defined in Network.Minio.Data

getBucketNotification :: Bucket -> Minio Notification Source #

Retrieve the notification configuration on a bucket.

putBucketNotification :: Bucket -> Notification -> Minio () Source #

Set the notification configuration on a bucket.

removeAllBucketNotification :: Bucket -> Minio () Source #

Remove all notifications configured on a bucket.

Object Operations

type Object = Text Source #

Represents an object name

File operations

fGetObject :: Bucket -> Object -> FilePath -> GetObjectOptions -> Minio () Source #

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.

fPutObject :: Bucket -> Object -> FilePath -> PutObjectOptions -> Minio () Source #

Upload the given file to the given object.

Conduit-based streaming operations

putObject :: Bucket -> Object -> ConduitM () ByteString Minio () -> Maybe Int64 -> PutObjectOptions -> Minio () Source #

Put an object from a conduit source. The size can be provided if known; this helps the library select optimal part sizes to perform a multipart upload. If not specified, it is assumed that the object can be potentially 5TiB and selects multipart sizes appropriately.

Input data type represents PutObject options.

data PutObjectOptions Source #

Data type represents various options specified for PutObject call. To specify PutObject options use the poo* accessors.

pooContentType :: PutObjectOptions -> Maybe Text Source #

Set a standard MIME type describing the format of the object.

pooContentEncoding :: PutObjectOptions -> Maybe Text Source #

Set what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.

pooContentDisposition :: PutObjectOptions -> Maybe Text Source #

Set presentational information for the object.

pooContentLanguage :: PutObjectOptions -> Maybe Text Source #

Set to describe the language(s) intended for the audience.

pooCacheControl :: PutObjectOptions -> Maybe Text Source #

Set to specify caching behavior for the object along the request/reply chain.

pooStorageClass :: PutObjectOptions -> Maybe Text Source #

Set to STANDARD or REDUCED_REDUNDANCY depending on your performance needs, storage class is STANDARD by default (i.e when Nothing is passed).

pooUserMetadata :: PutObjectOptions -> [(Text, Text)] Source #

Set user defined metadata to store with the object.

pooNumThreads :: PutObjectOptions -> Maybe Word Source #

Set number of worker threads used to upload an object.

getObject :: Bucket -> Object -> GetObjectOptions -> Minio (ConduitM () ByteString Minio ()) Source #

Get an object from the object store as a resumable source (conduit).

Input data type represents GetObject options.

gooRange :: GetObjectOptions -> Maybe ByteRange Source #

Set object's data of given offset begin and end, [ByteRangeFromTo 0 9] means first ten bytes of the source object.

gooIfMatch :: GetObjectOptions -> Maybe ETag Source #

Set matching ETag condition, GetObject which matches the following ETag.

gooIfNoneMatch :: GetObjectOptions -> Maybe ETag Source #

Set matching ETag none condition, GetObject which does not match the following ETag.

gooIfModifiedSince :: GetObjectOptions -> Maybe UTCTime Source #

Set object modified condition, GetObject modified since given time.

gooIfUnmodifiedSince :: GetObjectOptions -> Maybe UTCTime Source #

Set object unmodified condition, GetObject unmodified since given time.

Server-side copying

copyObject :: DestinationInfo -> SourceInfo -> Minio () Source #

Perform a server-side copy operation to create an object based on the destination specification in DestinationInfo from the source specification in SourceInfo. This function performs a multipart copy operation if the new object is to be greater than 5GiB in size.

data SourceInfo Source #

Represents source object in server-side copy object

Instances
Eq SourceInfo Source # 
Instance details

Defined in Network.Minio.Data

Show SourceInfo Source # 
Instance details

Defined in Network.Minio.Data

data DestinationInfo Source #

Represents destination object in server-side copy object

Querying

statObject :: Bucket -> Object -> Minio ObjectInfo Source #

Get an object's metadata from the object store.

Object removal functions

removeObject :: Bucket -> Object -> Minio () Source #

Remove an object from the object store.

removeIncompleteUpload :: Bucket -> Object -> Minio () Source #

Removes an ongoing multipart upload of an object.

Presigned Operations

type UrlExpiry = Int Source #

Time to expire for a presigned URL. It interpreted as a number of seconds. The maximum duration that can be specified is 7 days.

presignedPutObjectUrl :: Bucket -> Object -> UrlExpiry -> RequestHeaders -> Minio ByteString Source #

Generate a URL with authentication signature to PUT (upload) an object. Any extra headers if passed, are signed, and so they are required when the URL is used to upload data. This could be used, for example, to set user-metadata on the object.

For a list of possible headers to pass, please refer to the PUT object REST API AWS S3 documentation.

presignedGetObjectUrl :: Bucket -> Object -> UrlExpiry -> Query -> RequestHeaders -> Minio ByteString Source #

Generate a URL with authentication signature to GET (download) an object. All extra query parameters and headers passed here will be signed and are required when the generated URL is used. Query parameters could be used to change the response headers sent by the server. Headers can be used to set Etag match conditions among others.

For a list of possible request parameters and headers, please refer to the GET object REST API AWS S3 documentation.

presignedHeadObjectUrl :: Bucket -> Object -> UrlExpiry -> RequestHeaders -> Minio ByteString Source #

Generate a URL with authentication signature to make a HEAD request on an object. This is used to fetch metadata about an object. All extra headers passed here will be signed and are required when the generated URL is used.

For a list of possible headers to pass, please refer to the HEAD object REST API AWS S3 documentation.

Utilities for POST (browser) uploads

data PostPolicy Source #

A PostPolicy is required to perform uploads via browser forms.

newPostPolicy :: UTCTime -> [PostPolicyCondition] -> Either PostPolicyError PostPolicy Source #

This function creates a PostPolicy after validating its arguments.

presignedPostPolicy :: PostPolicy -> Minio (ByteString, Map Text ByteString) Source #

Generate a presigned URL and POST policy to upload files via a browser. On success, this function returns a URL and POST form-data.

showPostPolicy :: PostPolicy -> ByteString Source #

Convert Post Policy to a string (e.g. for printing).

Utilities to specify Post Policy conditions

ppCondBucket :: Bucket -> PostPolicyCondition Source #

Set the bucket name that the upload should use.

ppCondContentLengthRange :: Int64 -> Int64 -> PostPolicyCondition Source #

Set the content length range constraint with minimum and maximum byte count values.

ppCondContentType :: Text -> PostPolicyCondition Source #

Set the content-type header for the upload.

ppCondKey :: Object -> PostPolicyCondition Source #

Set the object name constraint for the upload.

ppCondKeyStartsWith :: Object -> PostPolicyCondition Source #

Set the object name prefix constraint for the upload.

ppCondSuccessActionStatus :: Int -> PostPolicyCondition Source #

Status code that the S3-server should send on a successful POST upload

Error handling

Data types representing various errors that may occur while working with an object storage service.