minio-hs 1.5.1 → 1.5.2
raw patch · 28 files changed
+315/−235 lines, 28 filesdep +optparse-applicativedep −temporarydep ~aesondep ~base64-bytestringdep ~binarynew-component:exe:BucketExistsnew-component:exe:CopyObjectnew-component:exe:FileUploadernew-component:exe:GetConfignew-component:exe:GetObjectnew-component:exe:HeadObjectnew-component:exe:Healnew-component:exe:ListBucketsnew-component:exe:ListIncompleteUploadsnew-component:exe:ListObjectsnew-component:exe:MakeBucketnew-component:exe:PresignedGetObjectnew-component:exe:PresignedPostPolicynew-component:exe:PresignedPutObjectnew-component:exe:PutObjectnew-component:exe:RemoveBucketnew-component:exe:RemoveIncompleteUploadnew-component:exe:RemoveObjectnew-component:exe:SelectObjectnew-component:exe:ServerInfonew-component:exe:ServiceSendRestartnew-component:exe:ServiceSendStopnew-component:exe:ServiceStatusnew-component:exe:SetConfig
Dependencies added: optparse-applicative
Dependencies removed: temporary
Dependency ranges changed: aeson, base64-bytestring, binary, bytestring, case-insensitive, conduit, conduit-extra, cryptonite, cryptonite-conduit, digest, filepath, http-client, http-conduit, http-types, memory, protolude, resourcet, text, time, transformers, unliftio, unliftio-core, unordered-containers, xml-conduit
Files
- CHANGELOG.md +7/−0
- 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/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
- src/Network/Minio/Data.hs +1/−1
@@ -1,6 +1,13 @@ Changelog ========== +## Version 1.5.2++* Fix region `us-west-2` for AWS S3 (#139)+* Build examples in CI+* Disable live-server tests by default, but run them in CI+* Drop support for GHC 8.2.x+ ## Version 1.5.1 * Add support for GHC 8.8
@@ -8,43 +8,42 @@ ## Installation -```sh-git clone https://github.com/minio/minio-hs.git+### Add to your project -cd minio-hs/+Simply add `minio-hs` to your project's `.cabal` dependencies section or if you are using hpack, to your `package.yaml` file as usual. -stack install-```+### Try it out directly with `ghci` -Tests can be run with:+From your home folder or any non-haskell project directory, just run: ```sh -stack test+stack install minio-hs ``` -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).--Documentation can be locally built with:+Then start an interpreter session and browse the available APIs with: ```sh -stack haddock-+$ stack ghci+> :browse Network.Minio ``` -## Quick-Start Example - File Uploader+## Examples +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.++### Quick-Start Example - File Uploader++This example program connects to a MinIO object storage server, makes a bucket on the server and then uploads a file to the bucket.++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.+ ### FileUploader.hs ``` haskell #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs --package optparse-applicative --package filepath+-- stack --resolver lts-14.11 runghc --package minio-hs --package optparse-applicative --package filepath -- -- MinIO Haskell SDK, (C) 2017-2019 MinIO, Inc.@@ -106,16 +105,19 @@ res <- runMinio minioPlayCI $ do -- Make a bucket; catch bucket already exists exception if thrown. bErr <- try $ makeBucket bucket Nothing++ -- If the bucket already exists, we would get a specific+ -- `ServiceErr` exception thrown. case bErr of- Left (MErrService BucketAlreadyOwnedByYou) -> return ()- Left e -> throwIO e- Right _ -> return ()+ Left BucketAlreadyOwnedByYou -> return ()+ Left e -> throwIO e+ Right _ -> return () - -- Upload filepath to bucket; object is derived from filepath.- fPutObject bucket object filepath def+ -- Upload filepath to bucket; object name is derived from filepath.+ fPutObject bucket object filepath defaultPutObjectOptions case res of- Left e -> putStrLn $ "file upload failed due to " ++ (show e)+ Left e -> putStrLn $ "file upload failed due to " ++ show e Right () -> putStrLn "file upload succeeded." ``` @@ -129,3 +131,47 @@ ## Contribute [Contributors Guide](https://github.com/minio/minio-hs/blob/master/CONTRIBUTING.md)++### Development++To setup:++```sh+git clone https://github.com/minio/minio-hs.git++cd minio-hs/++stack install+```++Tests can be run with:++```sh++stack test++```++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).++To run the live server tests, set a build flag as shown below:++```sh++stack test --flag minio-hs:live-test++# OR against a local MinIO server with:++MINIO_LOCAL=1 stack test --flag minio-hs:live-test++```++The configured CI system always runs both test-suites for every change.++Documentation can be locally built with:++```sh++stack haddock++```
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -20,8 +20,7 @@ {-# LANGUAGE OverloadedStrings #-} import Network.Minio -import Control.Monad.Catch (catchIf)-import Prelude+import UnliftIO.Exception (catch, throwIO) -- | The following example uses minio's play server at -- https://play.min.io. The endpoint and associated@@ -30,9 +29,6 @@ -- > minioPlayCI :: ConnectInfo -- -ignoreMinioErr :: ServiceErr -> Minio ()-ignoreMinioErr = return . const ()- main :: IO () main = do let@@ -43,13 +39,18 @@ res1 <- runMinio minioPlayCI $ do -- 1. Make a bucket; Catch BucketAlreadyOwnedByYou exception.- catchIf (== BucketAlreadyOwnedByYou) (makeBucket bucket Nothing) ignoreMinioErr+ catch (makeBucket bucket Nothing) (+ \e -> case e of+ BucketAlreadyOwnedByYou -> return ()+ _ -> throwIO e+ ) -- 2. Upload a file to bucket/object.- fPutObject bucket object localFile+ fPutObject bucket object localFile defaultPutObjectOptions -- 3. Copy bucket/object to bucket/objectCopy.- copyObject def {dstBucket = bucket, dstObject = objectCopy} def { srcBucket = bucket , srcObject = object }+ copyObject defaultDestinationInfo {dstBucket = bucket, dstObject = objectCopy}+ defaultSourceInfo { srcBucket = bucket , srcObject = object } case res1 of Left e -> putStrLn $ "copyObject failed." ++ show e
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs --package optparse-applicative --package filepath+-- stack --resolver lts-14.11 runghc --package minio-hs --package optparse-applicative --package filepath -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -43,6 +43,7 @@ (metavar "FILENAME" <> help "Name of file to upload to AWS S3 or a MinIO server") +cmdParser :: ParserInfo FilePath cmdParser = info (helper <*> fileNameArgs) (fullDesc@@ -62,12 +63,12 @@ -- Make a bucket; catch bucket already exists exception if thrown. bErr <- try $ makeBucket bucket Nothing case bErr of- Left (MErrService BucketAlreadyOwnedByYou) -> return ()- Left e -> throwIO e- Right _ -> return ()+ Left BucketAlreadyOwnedByYou -> return ()+ Left e -> throwIO e+ Right _ -> return () -- Upload filepath to bucket; object is derived from filepath.- fPutObject bucket object filepath def+ fPutObject bucket object filepath defaultPutObjectOptions case res of Left e -> putStrLn $ "file upload failed due to " ++ (show e)
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,6 +25,6 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ getConfig print res
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -38,8 +38,8 @@ bucket = "my-bucket" object = "my-object" res <- runMinio minioPlayCI $ do- src <- getObject bucket object def- C.connect src $ CB.sinkFileCautious "/tmp/my-object"+ src <- getObject bucket object defaultGetObjectOptions+ C.connect (gorObjectStream src) $ CB.sinkFileCautious "/tmp/my-object" case res of Left e -> putStrLn $ "getObject failed." ++ (show e)
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -36,7 +36,7 @@ bucket = "test" object = "passwd" res <- runMinio minioPlayCI $- headObject bucket object+ headObject bucket object [] case res of Left e -> putStrLn $ "headObject failed." ++ show e
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,7 +25,7 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ do hsr <- startHeal Nothing Nothing HealOpts { hoRecursive = True , hoDryRun = False
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -47,11 +47,11 @@ res <- runMinio minioPlayCI $ do liftIO $ B.putStrLn "Upload a file that we will fetch with a presigned URL..."- putObject bucket object (CC.repeat "a") (Just kb15) def+ putObject bucket object (CC.repeat "a") (Just kb15) defaultPutObjectOptions liftIO $ putStrLn $ "Done. Object created at: my-bucket/my-object" -- Extract Etag of uploaded object- oi <- statObject bucket object+ oi <- statObject bucket object defaultGetObjectOptions let etag = oiETag oi -- Set header to add an if-match constraint - this makes sure@@ -68,7 +68,7 @@ case res of Left e -> putStrLn $ "presignedPutObject URL failed." ++ show e- Right (headers, etag, url) -> do+ Right (headers, _, url) -> do -- We generate a curl command to demonstrate usage of the signed -- URL.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -38,7 +38,7 @@ now <- Time.getCurrentTime let bucket = "my-bucket"- object = "my-object"+ object = "photos/my-object" -- set an expiration time of 10 days expireTime = Time.addUTCTime (3600 * 24 * 10) now@@ -47,9 +47,9 @@ -- conditions are validated, newPostPolicy returns an Either value policyE = newPostPolicy expireTime [ -- set the object name condition- ppCondKey "photos/my-object"+ ppCondKey object -- set the bucket name condition- , ppCondBucket "my-bucket"+ , ppCondBucket bucket -- set the size range of object as 1B to 10MiB , ppCondContentLengthRange 1 (10*1024*1024) -- set content type as jpg image
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -41,14 +41,14 @@ -- Eg 1. Upload a stream of repeating "a" using putObject with default options. res1 <- runMinio minioPlayCI $- putObject bucket object (CC.repeat "a") (Just kb15) def+ putObject bucket object (CC.repeat "a") (Just kb15) defaultPutObjectOptions case res1 of Left e -> putStrLn $ "putObject failed." ++ show e Right () -> putStrLn "putObject succeeded." -- Eg 2. Upload a file using fPutObject with default options. res2 <- runMinio minioPlayCI $- fPutObject bucket object localFile def+ fPutObject bucket object localFile defaultPutObjectOptions case res2 of Left e -> putStrLn $ "fPutObject failed." ++ show e Right () -> putStrLn "fPutObject succeeded."
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-13.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2019 MinIO, Inc.@@ -22,7 +22,6 @@ import qualified Conduit as C import Control.Monad (when)-import qualified Data.ByteString.Lazy as LB import Prelude
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,6 +25,6 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ getServerInfo print res
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,6 +25,6 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ serviceSendAction ServiceActionRestart print res
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,6 +25,6 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ serviceSendAction ServiceActionStop print res
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,6 +25,6 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ serviceStatus print res
@@ -1,5 +1,5 @@ #!/usr/bin/env stack--- stack --resolver lts-11.1 runghc --package minio-hs+-- stack --resolver lts-14.11 runghc --package minio-hs -- -- MinIO Haskell SDK, (C) 2017, 2018 MinIO, Inc.@@ -25,7 +25,7 @@ main :: IO () main = do- res <- runMinio def $+ res <- runMinio minioPlayCI $ do 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\"}}}}" setConfig config
@@ -1,5 +1,6 @@+cabal-version: 2.2 name: minio-hs-version: 1.5.1+version: 1.5.2 synopsis: A MinIO Haskell Library for Amazon S3 compatible cloud storage. description: The MinIO Haskell client library provides simple APIs to@@ -21,14 +22,21 @@ README.md stack.yaml -cabal-version: >=1.10 -library- hs-source-dirs: src+common base-settings ghc-options: -Wall- exposed-modules: Network.Minio- , Network.Minio.AdminAPI- , Network.Minio.S3API+ default-language: Haskell2010+ default-extensions: BangPatterns+ , FlexibleContexts+ , FlexibleInstances+ , MultiParamTypeClasses+ , MultiWayIf+ , NoImplicitPrelude+ , OverloadedStrings+ , RankNTypes+ , ScopedTypeVariables+ , TypeFamilies+ , TupleSections other-modules: Lib.Prelude , Network.Minio.API , Network.Minio.APICommon@@ -79,192 +87,210 @@ , unliftio-core >= 0.1 , unordered-containers >= 0.2 , xml-conduit >= 1.8- default-language: Haskell2010- default-extensions: BangPatterns- , FlexibleContexts- , FlexibleInstances- , MultiParamTypeClasses- , MultiWayIf- , NoImplicitPrelude- , OverloadedStrings- , RankNTypes- , ScopedTypeVariables- , TypeFamilies- , TupleSections +library+ import: base-settings+ hs-source-dirs: src+ exposed-modules: Network.Minio+ , Network.Minio.AdminAPI+ , Network.Minio.S3API+ Flag live-test- Default: True+ Description: Build the test suite that runs against a live MinIO server+ Default: False Manual: True test-suite minio-hs-live-server-test+ import: base-settings type: exitcode-stdio-1.0 hs-source-dirs: test, src main-is: LiveServer.hs ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N- default-language: Haskell2010- default-extensions: BangPatterns- , FlexibleContexts- , FlexibleInstances- , MultiParamTypeClasses- , MultiWayIf- , NoImplicitPrelude- , OverloadedStrings- , RankNTypes- , ScopedTypeVariables- , TupleSections- , TypeFamilies- other-modules: Lib.Prelude- , Network.Minio- , Network.Minio.API- , Network.Minio.API.Test- , Network.Minio.APICommon+ other-modules: Network.Minio+ , Network.Minio.S3API , Network.Minio.AdminAPI- , Network.Minio.CopyObject- , Network.Minio.Data- , Network.Minio.Data.ByteString- , Network.Minio.Data.Crypto- , Network.Minio.Data.Time- , Network.Minio.Errors- , Network.Minio.JsonParser+ , Network.Minio.API.Test , Network.Minio.JsonParser.Test- , Network.Minio.ListOps- , Network.Minio.PresignedOperations- , Network.Minio.PutObject- , Network.Minio.S3API- , Network.Minio.SelectAPI- , Network.Minio.Sign.V4 , Network.Minio.TestHelpers- , Network.Minio.Utils , Network.Minio.Utils.Test- , Network.Minio.XmlGenerator , Network.Minio.XmlGenerator.Test- , Network.Minio.XmlParser , Network.Minio.XmlParser.Test- build-depends: base >= 4.7 && < 5- , minio-hs- , protolude >= 0.1.6- , QuickCheck- , aeson- , base64-bytestring- , binary- , bytestring- , case-insensitive- , conduit- , conduit-extra- , connection- , cryptonite- , cryptonite-conduit- , digest- , directory- , exceptions- , filepath- , http-client- , http-client-tls- , http-conduit- , http-types- , ini- , memory- , raw-strings-qq >= 1- , resourcet- , retry+ build-depends: minio-hs , tasty , tasty-hunit , tasty-quickcheck , tasty-smallcheck- , temporary- , text- , time- , transformers- , unliftio- , unliftio-core- , unordered-containers- , xml-conduit+ , QuickCheck if !flag(live-test) buildable: False test-suite minio-hs-test+ import: base-settings type: exitcode-stdio-1.0 hs-source-dirs: test, src main-is: Spec.hs- build-depends: base >= 4.7 && < 5- , minio-hs- , protolude >= 0.1.6+ build-depends: minio-hs , QuickCheck- , aeson- , base64-bytestring- , binary- , bytestring- , case-insensitive- , conduit- , conduit-extra- , connection- , cryptonite- , cryptonite-conduit- , digest- , directory- , exceptions- , filepath- , http-client- , http-client-tls- , http-conduit- , http-types- , ini- , memory- , raw-strings-qq >= 1- , resourcet- , retry , tasty , tasty-hunit , tasty-quickcheck , tasty-smallcheck- , temporary- , text- , time- , transformers- , unliftio- , unliftio-core- , unordered-containers- , xml-conduit ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N- default-language: Haskell2010- default-extensions: BangPatterns- , FlexibleContexts- , FlexibleInstances- , MultiParamTypeClasses- , MultiWayIf- , NoImplicitPrelude- , OverloadedStrings- , RankNTypes- , ScopedTypeVariables- , TupleSections- , TypeFamilies other-modules: Lib.Prelude , Network.Minio- , Network.Minio.API- , Network.Minio.API.Test- , Network.Minio.APICommon- , Network.Minio.AdminAPI- , Network.Minio.CopyObject- , Network.Minio.Data- , Network.Minio.Data.ByteString- , Network.Minio.Data.Crypto- , Network.Minio.Data.Time- , Network.Minio.Errors- , Network.Minio.JsonParser- , Network.Minio.JsonParser.Test- , Network.Minio.ListOps- , Network.Minio.PresignedOperations- , Network.Minio.PutObject , Network.Minio.S3API- , Network.Minio.SelectAPI- , Network.Minio.Sign.V4+ , Network.Minio.AdminAPI , Network.Minio.TestHelpers- , Network.Minio.Utils+ , Network.Minio.API.Test+ , Network.Minio.JsonParser.Test , Network.Minio.Utils.Test- , Network.Minio.XmlGenerator , Network.Minio.XmlGenerator.Test- , Network.Minio.XmlParser , Network.Minio.XmlParser.Test++Flag examples+ Description: Build the examples+ Default: False+ Manual: True++common examples-settings+ ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N+ default-language: Haskell2010+ default-extensions: OverloadedStrings+ build-depends: base >= 4.7 && < 5+ , bytestring+ , case-insensitive+ , conduit+ , conduit-extra+ , filepath+ , minio-hs+ , optparse-applicative+ , text+ , time+ , unliftio+ , unordered-containers+ hs-source-dirs: examples+ if !flag(examples)+ buildable: False++executable BucketExists+ import: examples-settings+ scope: private+ main-is: BucketExists.hs++executable CopyObject+ import: examples-settings+ scope: private+ main-is: CopyObject.hs++executable FileUploader+ import: examples-settings+ scope: private+ main-is: FileUploader.hs++executable GetConfig+ import: examples-settings+ scope: private+ main-is: GetConfig.hs++executable GetObject+ import: examples-settings+ scope: private+ main-is: GetObject.hs++executable HeadObject+ import: examples-settings+ scope: private+ main-is: HeadObject.hs++executable Heal+ import: examples-settings+ scope: private+ main-is: Heal.hs++executable ListBuckets+ import: examples-settings+ scope: private+ main-is: ListBuckets.hs++executable ListIncompleteUploads+ import: examples-settings+ scope: private+ main-is: ListIncompleteUploads.hs++executable ListObjects+ import: examples-settings+ scope: private+ main-is: ListObjects.hs++executable MakeBucket+ import: examples-settings+ scope: private+ main-is: MakeBucket.hs++executable PresignedGetObject+ import: examples-settings+ scope: private+ main-is: PresignedGetObject.hs++executable PresignedPostPolicy+ import: examples-settings+ scope: private+ main-is: PresignedPostPolicy.hs++executable PresignedPutObject+ import: examples-settings+ scope: private+ main-is: PresignedPutObject.hs++executable PutObject+ import: examples-settings+ scope: private+ main-is: PutObject.hs++executable RemoveBucket+ import: examples-settings+ scope: private+ main-is: RemoveBucket.hs++executable RemoveIncompleteUpload+ import: examples-settings+ scope: private+ main-is: RemoveIncompleteUpload.hs++executable RemoveObject+ import: examples-settings+ scope: private+ main-is: RemoveObject.hs++executable SelectObject+ import: examples-settings+ scope: private+ main-is: SelectObject.hs++executable ServerInfo+ import: examples-settings+ scope: private+ main-is: ServerInfo.hs++executable ServiceSendRestart+ import: examples-settings+ scope: private+ main-is: ServiceSendRestart.hs++executable ServiceSendStop+ import: examples-settings+ scope: private+ main-is: ServiceSendStop.hs++executable ServiceStatus+ import: examples-settings+ scope: private+ main-is: ServiceStatus.hs++executable SetConfig+ import: examples-settings+ scope: private+ main-is: SetConfig.hs source-repository head type: git
@@ -77,7 +77,7 @@ ("us-east-1", "s3.amazonaws.com") , ("us-east-2", "s3-us-east-2.amazonaws.com") , ("us-west-1", "s3-us-west-1.amazonaws.com")- , ("us-east-2", "s3-us-west-2.amazonaws.com")+ , ("us-west-2", "s3-us-west-2.amazonaws.com") , ("ca-central-1", "s3-ca-central-1.amazonaws.com") , ("ap-south-1", "s3-ap-south-1.amazonaws.com") , ("ap-northeast-1", "s3-ap-northeast-1.amazonaws.com")