packages feed

pushover-0.1.0.0: README.md

# Pushover

This is a small library for interacting with the Pushover API from within
Haskell.

Pushover exposes a straightforward API for sending notifications to users of
the Android and iOS Pushover app. Details of the API can be found at 
https://pushover.net/api.

## Usage

This library exposes a number of types which represent a `Request` and a
`Response`, and fields contained within these values. It provides functions
which can be used to create and make requests.

### Basic

A basic request can be made as follows:-

```
>>> apiKey  = makeTokenOrError "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
>>> userKey = makeTokenOrError "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
>>> sendMessage apiK usrK $ text "This is a test"
```

Assuming the keys are correct, this should immediately send the notification
to the user with `userKey`.

The `makeTokenOrError` function shown here should not generally be used. 
Instead, the `makeToken` function checks the validity of the token and wraps
the output in Either.

### Reader-based

A more useful approach is to integrate Pushover into your existing Monad stack.
This can be accomplished using the `createKeys` and `sendMessageM` functions:-

```
>>> keys = createKeys "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
>>> keys >>= runReaderT (sendMessageM $ text "This is a test")
```

The Monad-based functions (all with a trailing `M` in their name) require that
a request is executed within a stack including an instance of MonadError and
MonadIO. `sendMessageM` additionally requires a MonadReader and an instance of
`PushoverReader`. See 
[the Reader module](https://github.com/DanMeakin/pushover/blob/master/src/Network/Pushover/Reader.hs)
for more details.