git.iko.soy/typeable/minio-hs
on master help sign in
New release (#140)

* Disable live-server tests by default - They will always be run by our CI - Also update and fix example in README. * Update examples and add them to build - Also drop support for GHC 8.2.2 * Bump up version for new release

commitd2a78df4eb42093a4e13035fe20540fe739cfe7c authorAditya Manthramurthy <donatello@users.noreply.github.com> dateThu 2 Jan 2020, 11:23 (7 years ago) parentc31030b
29 files changed+335−239
.travis.yml+4−5 CHANGELOG.md+7 README.md+71−25 examples/BucketExists.hs+1−1 examples/CopyObject.hs+10−9 examples/FileUploader.hs+6−5 examples/GetConfig.hs+2−2 examples/GetObject.hs+3−3 examples/HeadObject.hs+2−2 examples/Heal.hs+2−2 examples/ListBuckets.hs+1−1 examples/ListIncompleteUploads.hs+1−1 examples/ListObjects.hs+1−1 examples/MakeBucket.hs+1−1 examples/PresignedGetObject.hs+4−4 examples/PresignedPostPolicy.hs+4−4 examples/PresignedPutObject.hs+1−1 examples/PutObject.hs+3−3 examples/README.md+17 examples/RemoveBucket.hs+1−1 examples/RemoveIncompleteUpload.hs+1−1 examples/RemoveObject.hs+1−1 examples/SelectObject.hs+1−2 examples/ServerInfo.hs+2−2 examples/ServiceSendRestart.hs+2−2 examples/ServiceSendStop.hs+2−2 examples/ServiceStatus.hs+2−2 examples/SetConfig.hs+2−2 minio-hs.cabal+180−154
.travis.yml+4−5
@@ -16,7 +16,6 @@ matrix:
1616 include:
1717
1818 # Cabal
19− - ghc: 8.2.2
2019 - ghc: 8.4.4
2120 - ghc: 8.6.5
2221 - ghc: 8.8.1
@@ -40,22 +39,22 @@ install:
4039 ghc --version
4140 cabal --version
4241 cabal new-update
43− cabal new-build --enable-tests --enable-benchmarks
42+ cabal new-build --enable-tests --enable-benchmarks -fexamples
4443 else
4544 # install stack
4645 curl -sSL https://get.haskellstack.org/ | sh
4746
4847 # build project with stack
4948 stack --version
50− stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks
49+ stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --flag minio-hs:examples
5150 fi
5251
5352script:
5453 - |
5554 if [ -z "$STACK_YAML" ]; then
56− MINIO_LOCAL=1 MINIO_SECURE=1 cabal new-test --enable-tests
55+ MINIO_LOCAL=1 MINIO_SECURE=1 cabal new-test --enable-tests -flive-test
5756 else
58− MINIO_LOCAL=1 MINIO_SECURE=1 stack test --system-ghc
57+ MINIO_LOCAL=1 MINIO_SECURE=1 stack test --system-ghc --flag minio-hs:live-test
5958 fi
6059
6160notifications:
CHANGELOG.md+7
@@ -1,6 +1,13 @@
11Changelog
22==========
33
4+## Version 1.5.2
5+
6+* Fix region `us-west-2` for AWS S3 (#139)
7+* Build examples in CI
8+* Disable live-server tests by default, but run them in CI
9+* Drop support for GHC 8.2.x
10+
411## Version 1.5.1
512
613* Add support for GHC 8.8
README.md+71−25
@@ -8,43 +8,42 @@ The MinIO Haskell Client SDK provides simple APIs to access [MinIO](https://min.
88
99## Installation
1010
11−```sh
12−git clone https://github.com/minio/minio-hs.git
11+### Add to your project
1312
14−cd minio-hs/
13+Simply add `minio-hs` to your project's `.cabal` dependencies section or if you are using hpack, to your `package.yaml` file as usual.
1514
16−stack install
17−```
15+### Try it out directly with `ghci`
1816
19−Tests can be run with:
17+From your home folder or any non-haskell project directory, just run:
2018
2119```sh
2220
23−stack test
21+stack install minio-hs
2422
2523```
2624
27−A section of the tests use the remote MinIO Play server at
28−`https://play.min.io` by default. For library development,
29−using this remote server maybe slow. To run the tests against a
30−locally running MinIO live server at `http://localhost:9000`, just set
31−the environment `MINIO_LOCAL` to any value (and unset it to switch
32−back to Play).
33−
34−Documentation can be locally built with:
25+Then start an interpreter session and browse the available APIs with:
3526
3627```sh
3728
38−stack haddock
39−
29+$ stack ghci
30+> :browse Network.Minio
4031```
4132
42−## Quick-Start Example - File Uploader
33+## Examples
34+
35+The [examples](https://github.com/minio/minio-hs/tree/master/examples) folder contains many examples that you can try out and use to learn and to help with developing your own projects.
36+
37+### Quick-Start Example - File Uploader
38+
39+This example program connects to a MinIO object storage server, makes a bucket on the server and then uploads a file to the bucket.
40+
41+We will use the MinIO server running at https://play.min.io in this example. Feel free to use this service for testing and development. Access credentials are present in the library and are open to the public.
4342
4443### FileUploader.hs
4544``` haskell
4645#!/usr/bin/env stack
47−-- stack --resolver lts-11.1 runghc --package minio-hs --package optparse-applicative --package filepath
46+-- stack --resolver lts-14.11 runghc --package minio-hs --package optparse-applicative --package filepath
4847
4948--
5049-- MinIO Haskell SDK, (C) 2017-2019 MinIO, Inc.
@@ -106,16 +105,19 @@ main = do
106105 res <- runMinio minioPlayCI $ do
107106 -- Make a bucket; catch bucket already exists exception if thrown.
108107 bErr <- try $ makeBucket bucket Nothing
108+
109+ -- If the bucket already exists, we would get a specific
110+ -- `ServiceErr` exception thrown.
109111 case bErr of
110− Left (MErrService BucketAlreadyOwnedByYou) -> return ()
111− Left e -> throwIO e
112− Right _ -> return ()
112+ Left BucketAlreadyOwnedByYou -> return ()
113+ Left e -> throwIO e
114+ Right _ -> return ()
113115
114− -- Upload filepath to bucket; object is derived from filepath.
115− fPutObject bucket object filepath def
116+ -- Upload filepath to bucket; object name is derived from filepath.
117+ fPutObject bucket object filepath defaultPutObjectOptions
116118
117119 case res of
118− Left e -> putStrLn $ "file upload failed due to " ++ (show e)
120+ Left e -> putStrLn $ "file upload failed due to " ++ show e
119121 Right () -> putStrLn "file upload succeeded."
120122```
121123
@@ -129,3 +131,47 @@ main = do
129131## Contribute
130132
131133[Contributors Guide](https://github.com/minio/minio-hs/blob/master/CONTRIBUTING.md)
134+
135+### Development
136+
137+To setup:
138+
139+```sh
140+git clone https://github.com/minio/minio-hs.git
141+
142+cd minio-hs/
143+
144+stack install
145+```
146+
147+Tests can be run with:
148+
149+```sh
150+
151+stack test
152+
153+```
154+
155+A section of the tests use the remote MinIO Play server at `https://play.min.io` by default. For library development, using this remote server maybe slow. To run the tests against a locally running MinIO live server at `http://localhost:9000`, just set the environment `MINIO_LOCAL` to any value (and unset it to switch back to Play).
156+
157+To run the live server tests, set a build flag as shown below:
158+
159+```sh
160+
161+stack test --flag minio-hs:live-test
162+
163+# OR against a local MinIO server with:
164+
165+MINIO_LOCAL=1 stack test --flag minio-hs:live-test
166+
167+```
168+
169+The configured CI system always runs both test-suites for every change.
170+
171+Documentation can be locally built with:
172+
173+```sh
174+
175+stack haddock
176+
177+```
examples/BucketExists.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/CopyObject.hs+10−9
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -20,8 +20,7 @@
2020{-# LANGUAGE OverloadedStrings #-}
2121import Network.Minio
2222
23−import Control.Monad.Catch (catchIf)
24−import Prelude
23+import UnliftIO.Exception (catch, throwIO)
2524
2625-- | The following example uses minio's play server at
2726-- https://play.min.io. The endpoint and associated
@@ -30,9 +29,6 @@ import Prelude
3029-- > minioPlayCI :: ConnectInfo
3130--
3231
33−ignoreMinioErr :: ServiceErr -> Minio ()
34−ignoreMinioErr = return . const ()
35−
3632main :: IO ()
3733main = do
3834 let
@@ -43,13 +39,18 @@ main = do
4339
4440 res1 <- runMinio minioPlayCI $ do
4541 -- 1. Make a bucket; Catch BucketAlreadyOwnedByYou exception.
46− catchIf (== BucketAlreadyOwnedByYou) (makeBucket bucket Nothing) ignoreMinioErr
42+ catch (makeBucket bucket Nothing) (
43+ \e -> case e of
44+ BucketAlreadyOwnedByYou -> return ()
45+ _ -> throwIO e
46+ )
4747
4848 -- 2. Upload a file to bucket/object.
49− fPutObject bucket object localFile
49+ fPutObject bucket object localFile defaultPutObjectOptions
5050
5151 -- 3. Copy bucket/object to bucket/objectCopy.
52− copyObject def {dstBucket = bucket, dstObject = objectCopy} def { srcBucket = bucket , srcObject = object }
52+ copyObject defaultDestinationInfo {dstBucket = bucket, dstObject = objectCopy}
53+ defaultSourceInfo { srcBucket = bucket , srcObject = object }
5354
5455 case res1 of
5556 Left e -> putStrLn $ "copyObject failed." ++ show e
examples/FileUploader.hs+6−5
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs --package optparse-applicative --package filepath
2+-- stack --resolver lts-14.11 runghc --package minio-hs --package optparse-applicative --package filepath
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -43,6 +43,7 @@ fileNameArgs = strArgument
4343 (metavar "FILENAME"
4444 <> help "Name of file to upload to AWS S3 or a MinIO server")
4545
46+cmdParser :: ParserInfo FilePath
4647cmdParser = info
4748 (helper <*> fileNameArgs)
4849 (fullDesc
@@ -62,12 +63,12 @@ main = do
6263 -- Make a bucket; catch bucket already exists exception if thrown.
6364 bErr <- try $ makeBucket bucket Nothing
6465 case bErr of
65− Left (MErrService BucketAlreadyOwnedByYou) -> return ()
66− Left e -> throwIO e
67− Right _ -> return ()
66+ Left BucketAlreadyOwnedByYou -> return ()
67+ Left e -> throwIO e
68+ Right _ -> return ()
6869
6970 -- Upload filepath to bucket; object is derived from filepath.
70− fPutObject bucket object filepath def
71+ fPutObject bucket object filepath defaultPutObjectOptions
7172
7273 case res of
7374 Left e -> putStrLn $ "file upload failed due to " ++ (show e)
examples/GetConfig.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,6 +25,6 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 getConfig
3030 print res
examples/GetObject.hs+3−3
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -38,8 +38,8 @@ main = do
3838 bucket = "my-bucket"
3939 object = "my-object"
4040 res <- runMinio minioPlayCI $ do
41− src <- getObject bucket object def
42− C.connect src $ CB.sinkFileCautious "/tmp/my-object"
41+ src <- getObject bucket object defaultGetObjectOptions
42+ C.connect (gorObjectStream src) $ CB.sinkFileCautious "/tmp/my-object"
4343
4444 case res of
4545 Left e -> putStrLn $ "getObject failed." ++ (show e)
examples/HeadObject.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -36,7 +36,7 @@ main = do
3636 bucket = "test"
3737 object = "passwd"
3838 res <- runMinio minioPlayCI $
39− headObject bucket object
39+ headObject bucket object []
4040
4141 case res of
4242 Left e -> putStrLn $ "headObject failed." ++ show e
examples/Heal.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,7 +25,7 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 do
3030 hsr <- startHeal Nothing Nothing HealOpts { hoRecursive = True
3131 , hoDryRun = False
examples/ListBuckets.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/ListIncompleteUploads.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/ListObjects.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/MakeBucket.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/PresignedGetObject.hs+4−4
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -47,11 +47,11 @@ main = do
4747
4848 res <- runMinio minioPlayCI $ do
4949 liftIO $ B.putStrLn "Upload a file that we will fetch with a presigned URL..."
50− putObject bucket object (CC.repeat "a") (Just kb15) def
50+ putObject bucket object (CC.repeat "a") (Just kb15) defaultPutObjectOptions
5151 liftIO $ putStrLn $ "Done. Object created at: my-bucket/my-object"
5252
5353 -- Extract Etag of uploaded object
54− oi <- statObject bucket object
54+ oi <- statObject bucket object defaultGetObjectOptions
5555 let etag = oiETag oi
5656
5757 -- Set header to add an if-match constraint - this makes sure
@@ -68,7 +68,7 @@ main = do
6868
6969 case res of
7070 Left e -> putStrLn $ "presignedPutObject URL failed." ++ show e
71− Right (headers, etag, url) -> do
71+ Right (headers, _, url) -> do
7272
7373 -- We generate a curl command to demonstrate usage of the signed
7474 -- URL.
examples/PresignedPostPolicy.hs+4−4
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -38,7 +38,7 @@ main = do
3838 now <- Time.getCurrentTime
3939 let
4040 bucket = "my-bucket"
41− object = "my-object"
41+ object = "photos/my-object"
4242
4343 -- set an expiration time of 10 days
4444 expireTime = Time.addUTCTime (3600 * 24 * 10) now
@@ -47,9 +47,9 @@ main = do
4747 -- conditions are validated, newPostPolicy returns an Either value
4848 policyE = newPostPolicy expireTime
4949 [ -- set the object name condition
50− ppCondKey "photos/my-object"
50+ ppCondKey object
5151 -- set the bucket name condition
52− , ppCondBucket "my-bucket"
52+ , ppCondBucket bucket
5353 -- set the size range of object as 1B to 10MiB
5454 , ppCondContentLengthRange 1 (10*1024*1024)
5555 -- set content type as jpg image
examples/PresignedPutObject.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/PutObject.hs+3−3
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -41,14 +41,14 @@ main = do
4141
4242 -- Eg 1. Upload a stream of repeating "a" using putObject with default options.
4343 res1 <- runMinio minioPlayCI $
44− putObject bucket object (CC.repeat "a") (Just kb15) def
44+ putObject bucket object (CC.repeat "a") (Just kb15) defaultPutObjectOptions
4545 case res1 of
4646 Left e -> putStrLn $ "putObject failed." ++ show e
4747 Right () -> putStrLn "putObject succeeded."
4848
4949 -- Eg 2. Upload a file using fPutObject with default options.
5050 res2 <- runMinio minioPlayCI $
51− fPutObject bucket object localFile def
51+ fPutObject bucket object localFile defaultPutObjectOptions
5252 case res2 of
5353 Left e -> putStrLn $ "fPutObject failed." ++ show e
5454 Right () -> putStrLn "fPutObject succeeded."
examples/README.mdnew file+17
@@ -0,0 +1,17 @@
1+# Examples
2+
3+The examples in this directory illustrate usage of various APIs provided by this library. Each file is self-contained and can be run like a script directly.
4+
5+To build the examples, the build flag `examples` needs to be turned on:
6+
7+```sh
8+stack build --flag minio-hs:examples
9+```
10+
11+Now to run and example script [BucketExists.hs](https://github.com/minio/minio-hs/blob/master/examples/BucketExists.hs):
12+
13+```sh
14+stack exec BucketExists
15+```
16+
17+The CI system is configured to build these examples with every change, so they should be current.
examples/RemoveBucket.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/RemoveIncompleteUpload.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/RemoveObject.hs+1−1
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
examples/SelectObject.hs+1−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-13.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2019 MinIO, Inc.
@@ -22,7 +22,6 @@ import Network.Minio
2222
2323import qualified Conduit as C
2424import Control.Monad (when)
25−import qualified Data.ByteString.Lazy as LB
2625
2726import Prelude
2827
examples/ServerInfo.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,6 +25,6 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 getServerInfo
3030 print res
examples/ServiceSendRestart.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,6 +25,6 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 serviceSendAction ServiceActionRestart
3030 print res
examples/ServiceSendStop.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,6 +25,6 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 serviceSendAction ServiceActionStop
3030 print res
examples/ServiceStatus.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,6 +25,6 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 serviceStatus
3030 print res
examples/SetConfig.hs+2−2
@@ -1,5 +1,5 @@
11#!/usr/bin/env stack
2−-- stack --resolver lts-11.1 runghc --package minio-hs
2+-- stack --resolver lts-14.11 runghc --package minio-hs
33
44--
55-- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -25,7 +25,7 @@ import Prelude
2525
2626main :: IO ()
2727main = do
28− res <- runMinio def $
28+ res <- runMinio minioPlayCI $
2929 do
3030 let config = "{\"version\":\"25\",\"credential\":{\"accessKey\":\"minio\",\"secretKey\":\"minio123\"},\"region\":\"\",\"browser\":\"on\",\"worm\":\"off\",\"domain\":\"\",\"storageclass\":{\"standard\":\"\",\"rrs\":\"\"},\"cache\":{\"drives\":[],\"expiry\":90,\"exclude\":[]},\"notify\":{\"amqp\":{\"2\":{\"enable\":false,\"url\":\"amqp://guest:guest@localhost:5672/\",\"exchange\":\"minio\",\"routingKey\":\"minio\",\"exchangeType\":\"direct\",\"deliveryMode\":0,\"mandatory\":false,\"immediate\":false,\"durable\":false,\"internal\":false,\"noWait\":false,\"autoDeleted\":false}},\"elasticsearch\":{\"1\":{\"enable\":false,\"format\":\"namespace\",\"url\":\"http://localhost:9200\",\"index\":\"minio_events\"}},\"kafka\":{\"1\":{\"enable\":false,\"brokers\":null,\"topic\":\"\"}},\"mqtt\":{\"1\":{\"enable\":false,\"broker\":\"\",\"topic\":\"\",\"qos\":0,\"clientId\":\"\",\"username\":\"\",\"password\":\"\",\"reconnectInterval\":0,\"keepAliveInterval\":0}},\"mysql\":{\"1\":{\"enable\":false,\"format\":\"namespace\",\"dsnString\":\"\",\"table\":\"\",\"host\":\"\",\"port\":\"\",\"user\":\"\",\"password\":\"\",\"database\":\"\"}},\"nats\":{\"1\":{\"enable\":false,\"address\":\"\",\"subject\":\"\",\"username\":\"\",\"password\":\"\",\"token\":\"\",\"secure\":false,\"pingInterval\":0,\"streaming\":{\"enable\":false,\"clusterID\":\"\",\"clientID\":\"\",\"async\":false,\"maxPubAcksInflight\":0}}},\"postgresql\":{\"1\":{\"enable\":false,\"format\":\"namespace\",\"connectionString\":\"\",\"table\":\"\",\"host\":\"\",\"port\":\"\",\"user\":\"\",\"password\":\"\",\"database\":\"\"}},\"redis\":{\"test1\":{\"enable\":true,\"format\":\"namespace\",\"address\":\"127.0.0.1:6379\",\"password\":\"\",\"key\":\"bucketevents_ns\"},\"test2\":{\"enable\":true,\"format\":\"access\",\"address\":\"127.0.0.1:6379\",\"password\":\"\",\"key\":\"bucketevents_log\"}},\"webhook\":{\"1\":{\"enable\":true,\"endpoint\":\"http://localhost:3000\"},\"2\":{\"enable\":true,\"endpoint\":\"http://localhost:3001\"}}}}"
3131 setConfig config
minio-hs.cabal+180−154
@@ -1,5 +1,6 @@
1+cabal-version: 2.2
12name: minio-hs
2−version: 1.5.1
3+version: 1.5.2
34synopsis: A MinIO Haskell Library for Amazon S3 compatible cloud
45 storage.
56description: The MinIO Haskell client library provides simple APIs to
@@ -21,14 +22,21 @@ extra-source-files:
2122 README.md
2223 stack.yaml
2324
24−cabal-version: >=1.10
2525
26−library
27− hs-source-dirs: src
26+common base-settings
2827 ghc-options: -Wall
29− exposed-modules: Network.Minio
30− , Network.Minio.AdminAPI
31− , Network.Minio.S3API
28+ default-language: Haskell2010
29+ default-extensions: BangPatterns
30+ , FlexibleContexts
31+ , FlexibleInstances
32+ , MultiParamTypeClasses
33+ , MultiWayIf
34+ , NoImplicitPrelude
35+ , OverloadedStrings
36+ , RankNTypes
37+ , ScopedTypeVariables
38+ , TypeFamilies
39+ , TupleSections
3240 other-modules: Lib.Prelude
3341 , Network.Minio.API
3442 , Network.Minio.APICommon
@@ -79,193 +87,211 @@ library
7987 , unliftio-core >= 0.1
8088 , unordered-containers >= 0.2
8189 , xml-conduit >= 1.8
82− default-language: Haskell2010
83− default-extensions: BangPatterns
84− , FlexibleContexts
85− , FlexibleInstances
86− , MultiParamTypeClasses
87− , MultiWayIf
88− , NoImplicitPrelude
89− , OverloadedStrings
90− , RankNTypes
91− , ScopedTypeVariables
92− , TypeFamilies
93− , TupleSections
90+
91+library
92+ import: base-settings
93+ hs-source-dirs: src
94+ exposed-modules: Network.Minio
95+ , Network.Minio.AdminAPI
96+ , Network.Minio.S3API
9497
9598Flag live-test
96− Default: True
99+ Description: Build the test suite that runs against a live MinIO server
100+ Default: False
97101 Manual: True
98102
99103test-suite minio-hs-live-server-test
104+ import: base-settings
100105 type: exitcode-stdio-1.0
101106 hs-source-dirs: test, src
102107 main-is: LiveServer.hs
103108 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
104− default-language: Haskell2010
105− default-extensions: BangPatterns
106− , FlexibleContexts
107− , FlexibleInstances
108− , MultiParamTypeClasses
109− , MultiWayIf
110− , NoImplicitPrelude
111− , OverloadedStrings
112− , RankNTypes
113− , ScopedTypeVariables
114− , TupleSections
115− , TypeFamilies
116− other-modules: Lib.Prelude
117− , Network.Minio
118− , Network.Minio.API
119− , Network.Minio.API.Test
120− , Network.Minio.APICommon
109+ other-modules: Network.Minio
110+ , Network.Minio.S3API
121111 , Network.Minio.AdminAPI
122− , Network.Minio.CopyObject
123− , Network.Minio.Data
124− , Network.Minio.Data.ByteString
125− , Network.Minio.Data.Crypto
126− , Network.Minio.Data.Time
127− , Network.Minio.Errors
128− , Network.Minio.JsonParser
112+ , Network.Minio.API.Test
129113 , Network.Minio.JsonParser.Test
130− , Network.Minio.ListOps
131− , Network.Minio.PresignedOperations
132− , Network.Minio.PutObject
133− , Network.Minio.S3API
134− , Network.Minio.SelectAPI
135− , Network.Minio.Sign.V4
136114 , Network.Minio.TestHelpers
137− , Network.Minio.Utils
138115 , Network.Minio.Utils.Test
139− , Network.Minio.XmlGenerator
140116 , Network.Minio.XmlGenerator.Test
141− , Network.Minio.XmlParser
142117 , Network.Minio.XmlParser.Test
143− build-depends: base >= 4.7 && < 5
144− , minio-hs
145− , protolude >= 0.1.6
146− , QuickCheck
147− , aeson
148− , base64-bytestring
149− , binary
150− , bytestring
151− , case-insensitive
152− , conduit
153− , conduit-extra
154− , connection
155− , cryptonite
156− , cryptonite-conduit
157− , digest
158− , directory
159− , exceptions
160− , filepath
161− , http-client
162− , http-client-tls
163− , http-conduit
164− , http-types
165− , ini
166− , memory
167− , raw-strings-qq >= 1
168− , resourcet
169− , retry
118+ build-depends: minio-hs
170119 , tasty
171120 , tasty-hunit
172121 , tasty-quickcheck
173122 , tasty-smallcheck
174− , temporary
175− , text
176− , time
177− , transformers
178− , unliftio
179− , unliftio-core
180− , unordered-containers
181− , xml-conduit
123+ , QuickCheck
182124 if !flag(live-test)
183125 buildable: False
184126
185127test-suite minio-hs-test
128+ import: base-settings
186129 type: exitcode-stdio-1.0
187130 hs-source-dirs: test, src
188131 main-is: Spec.hs
189− build-depends: base >= 4.7 && < 5
190− , minio-hs
191− , protolude >= 0.1.6
132+ build-depends: minio-hs
192133 , QuickCheck
193− , aeson
194− , base64-bytestring
195− , binary
196− , bytestring
197− , case-insensitive
198− , conduit
199− , conduit-extra
200− , connection
201− , cryptonite
202− , cryptonite-conduit
203− , digest
204− , directory
205− , exceptions
206− , filepath
207− , http-client
208− , http-client-tls
209− , http-conduit
210− , http-types
211− , ini
212− , memory
213− , raw-strings-qq >= 1
214− , resourcet
215− , retry
216134 , tasty
217135 , tasty-hunit
218136 , tasty-quickcheck
219137 , tasty-smallcheck
220− , temporary
221− , text
222− , time
223− , transformers
224− , unliftio
225− , unliftio-core
226− , unordered-containers
227− , xml-conduit
228138 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
229− default-language: Haskell2010
230− default-extensions: BangPatterns
231− , FlexibleContexts
232− , FlexibleInstances
233− , MultiParamTypeClasses
234− , MultiWayIf
235− , NoImplicitPrelude
236− , OverloadedStrings
237− , RankNTypes
238− , ScopedTypeVariables
239− , TupleSections
240− , TypeFamilies
241139 other-modules: Lib.Prelude
242140 , Network.Minio
243− , Network.Minio.API
244− , Network.Minio.API.Test
245− , Network.Minio.APICommon
246− , Network.Minio.AdminAPI
247− , Network.Minio.CopyObject
248− , Network.Minio.Data
249− , Network.Minio.Data.ByteString
250− , Network.Minio.Data.Crypto
251− , Network.Minio.Data.Time
252− , Network.Minio.Errors
253− , Network.Minio.JsonParser
254− , Network.Minio.JsonParser.Test
255− , Network.Minio.ListOps
256− , Network.Minio.PresignedOperations
257− , Network.Minio.PutObject
258141 , Network.Minio.S3API
259− , Network.Minio.SelectAPI
260− , Network.Minio.Sign.V4
142+ , Network.Minio.AdminAPI
261143 , Network.Minio.TestHelpers
262− , Network.Minio.Utils
144+ , Network.Minio.API.Test
145+ , Network.Minio.JsonParser.Test
263146 , Network.Minio.Utils.Test
264− , Network.Minio.XmlGenerator
265147 , Network.Minio.XmlGenerator.Test
266− , Network.Minio.XmlParser
267148 , Network.Minio.XmlParser.Test
268149
150+Flag examples
151+ Description: Build the examples
152+ Default: False
153+ Manual: True
154+
155+common examples-settings
156+ ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
157+ default-language: Haskell2010
158+ default-extensions: OverloadedStrings
159+ build-depends: base >= 4.7 && < 5
160+ , bytestring
161+ , case-insensitive
162+ , conduit
163+ , conduit-extra
164+ , filepath
165+ , minio-hs
166+ , optparse-applicative
167+ , text
168+ , time
169+ , unliftio
170+ , unordered-containers
171+ hs-source-dirs: examples
172+ if !flag(examples)
173+ buildable: False
174+
175+executable BucketExists
176+ import: examples-settings
177+ scope: private
178+ main-is: BucketExists.hs
179+
180+executable CopyObject
181+ import: examples-settings
182+ scope: private
183+ main-is: CopyObject.hs
184+
185+executable FileUploader
186+ import: examples-settings
187+ scope: private
188+ main-is: FileUploader.hs
189+
190+executable GetConfig
191+ import: examples-settings
192+ scope: private
193+ main-is: GetConfig.hs
194+
195+executable GetObject
196+ import: examples-settings
197+ scope: private
198+ main-is: GetObject.hs
199+
200+executable HeadObject
201+ import: examples-settings
202+ scope: private
203+ main-is: HeadObject.hs
204+
205+executable Heal
206+ import: examples-settings
207+ scope: private
208+ main-is: Heal.hs
209+
210+executable ListBuckets
211+ import: examples-settings
212+ scope: private
213+ main-is: ListBuckets.hs
214+
215+executable ListIncompleteUploads
216+ import: examples-settings
217+ scope: private
218+ main-is: ListIncompleteUploads.hs
219+
220+executable ListObjects
221+ import: examples-settings
222+ scope: private
223+ main-is: ListObjects.hs
224+
225+executable MakeBucket
226+ import: examples-settings
227+ scope: private
228+ main-is: MakeBucket.hs
229+
230+executable PresignedGetObject
231+ import: examples-settings
232+ scope: private
233+ main-is: PresignedGetObject.hs
234+
235+executable PresignedPostPolicy
236+ import: examples-settings
237+ scope: private
238+ main-is: PresignedPostPolicy.hs
239+
240+executable PresignedPutObject
241+ import: examples-settings
242+ scope: private
243+ main-is: PresignedPutObject.hs
244+
245+executable PutObject
246+ import: examples-settings
247+ scope: private
248+ main-is: PutObject.hs
249+
250+executable RemoveBucket
251+ import: examples-settings
252+ scope: private
253+ main-is: RemoveBucket.hs
254+
255+executable RemoveIncompleteUpload
256+ import: examples-settings
257+ scope: private
258+ main-is: RemoveIncompleteUpload.hs
259+
260+executable RemoveObject
261+ import: examples-settings
262+ scope: private
263+ main-is: RemoveObject.hs
264+
265+executable SelectObject
266+ import: examples-settings
267+ scope: private
268+ main-is: SelectObject.hs
269+
270+executable ServerInfo
271+ import: examples-settings
272+ scope: private
273+ main-is: ServerInfo.hs
274+
275+executable ServiceSendRestart
276+ import: examples-settings
277+ scope: private
278+ main-is: ServiceSendRestart.hs
279+
280+executable ServiceSendStop
281+ import: examples-settings
282+ scope: private
283+ main-is: ServiceSendStop.hs
284+
285+executable ServiceStatus
286+ import: examples-settings
287+ scope: private
288+ main-is: ServiceStatus.hs
289+
290+executable SetConfig
291+ import: examples-settings
292+ scope: private
293+ main-is: SetConfig.hs
294+
269295source-repository head
270296 type: git
271297 location: https://github.com/minio/minio-hs