content: --
  -- MinIO Haskell SDK, (C) 2023 MinIO, Inc.
  --
  -- Licensed under the Apache License, Version 2.0 (the "License");
  -- you may not use this file except in compliance with the License.
  -- You may obtain a copy of the License at
  --
  --     http://www.apache.org/licenses/LICENSE-2.0
  --
  -- Unless required by applicable law or agreed to in writing, software
  -- distributed under the License is distributed on an "AS IS" BASIS,
  -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  -- See the License for the specific language governing permissions and
  -- limitations under the License.
  --
  {-# LANGUAGE OverloadedStrings #-}
  
  import Control.Monad.IO.Class (liftIO)
  import Network.Minio
  import Prelude
  
  main :: IO ()
  main = do
    -- Use play credentials for example.
    let assumeRole =
          STSAssumeRole
            ( CredentialValue
                "Q3AM3UQ867SPQQA43P2F"
                "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
                Nothing
            )
            $ defaultSTSAssumeRoleOptions
              { saroLocation = Just "us-east-1",
                saroEndpoint = Just "https://play.min.io:9000"
              }
  
    -- Retrieve temporary credentials and print them.
    cv <- requestSTSCredential assumeRole
    print $ "Temporary credentials" ++ show (credentialValueText $ fst cv)
    print $ "Expiry" ++ show (snd cv)
  
    -- Configure 'ConnectInfo' to request temporary credentials on demand.
    ci <- setSTSCredential assumeRole "https://play.min.io"
    res <- runMinio ci $ do
      buckets <- listBuckets
      liftIO $ print $ "Top 5 buckets: " ++ show (take 5 buckets)
    print res
  