https://github.com/freckle/amazonka-mtl
https://github.com/freckle/amazonka-mtl
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/freckle/amazonka-mtl
- Owner: freckle
- License: mit
- Created: 2023-09-12T14:27:39.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-24T19:26:05.000Z (over 2 years ago)
- Last Synced: 2024-04-25T22:30:37.162Z (about 2 years ago)
- Language: Haskell
- Size: 33.2 KB
- Stars: 1
- Watchers: 8
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.lhs
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# amazonka-mtl
[](https://hackage.haskell.org/package/amazonka-mtl)
[](http://stackage.org/nightly/package/amazonka-mtl)
[](http://stackage.org/lts/package/amazonka-mtl)
[](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)