An open API service indexing awesome lists of open source software.

https://github.com/freckle/amazonka-mtl


https://github.com/freckle/amazonka-mtl

Last synced: 8 months ago
JSON representation

Awesome Lists containing this project

README

          

# amazonka-mtl

[![Hackage](https://img.shields.io/hackage/v/amazonka-mtl.svg?style=flat)](https://hackage.haskell.org/package/amazonka-mtl)
[![Stackage Nightly](http://stackage.org/package/amazonka-mtl/badge/nightly)](http://stackage.org/nightly/package/amazonka-mtl)
[![Stackage LTS](http://stackage.org/package/amazonka-mtl/badge/lts)](http://stackage.org/lts/package/amazonka-mtl)
[![CI](https://github.com/freckle/amazonka-mtl/actions/workflows/ci.yml/badge.svg)](https://github.com/freckle/amazonka-mtl/actions/workflows/ci.yml)

MTL-style type-class and deriving-via newtypes for Amazonka.

## Example

This package allows incorporation of AWS actions into any MTL-style function,

```haskell
import Amazonka.Data.Text (ToText(..))
import Amazonka.S3.ListObjects
import Amazonka.S3.Types.Object
import Blammo.Logging
import Conduit
import Control.Lens hiding ((.=))
import Control.Monad.AWS as AWS
```

```haskell
someAction
:: ( MonadIO m
, MonadLogger m
, MonadAWS m
, MonadReader env m
, HasSettings env
)
=> m ()
someAction = do
Settings {..} <- view settingsL

keys <-
runConduit
$ paginate (newListObjects settingsBucketName)
.| concatMapC (^. listObjectsResponse_contents)
.| concatC
.| mapC (^. object_key . to toText)
.| iterMC (\k -> logDebug $ k :# [])
.| sinkList

logInfo $ "Bucket contents" :# ["keys" .= keys]
```

This package also provides a number of options for execution:

- Through a concrete transformer: `Control.Monad.AWS.EnvT`
- Through your own reader env and deriving-via: `Control.Monad.AWS.ViaReader`

This package also provides mechanisms for mocking AWS in tests:

- Through a concrete transformer: `Control.Monad.AWS.MockT`
- Through your own reader env and deriving-via: `Control.Monad.AWS.ViaMock`

Please see the [documentation on hackage][hackage] for all the details.

[hackage]: https://hackage.haskell.org/package/amazonka-mtl

## Development & Tests

```console
stack build --fast --pedantic --test --file-watch
```

---

[CHANGELOG](./CHANGELOG.md) | [LICENSE](./LICENSE)