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

https://github.com/freckle/asana-hs


https://github.com/freckle/asana-hs

ghvm-managed

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

          

# Asana

Haskell client for the Asana API.

## API Key

1. Visit *Settings > Apps > Developer apps*, create a Personal Access Token

## Simple Usage

For example, to make a quick script to list all incomplete tasks in a project:

```hs
import Asana.Api.Request
import Asana.Api.Task
import Data.Text (pack)
import System.Environment (getEnv)
import Control.Monad.Logger (runStdoutLoggingT)
import Control.Monad.Reader (runReaderT)

main :: IO ()
main = do
key <- AsanaAccessKey . pack <$> getEnv "ASANA_ACCESS_KEY"

runStdoutLoggingT $ flip runReaderT key $ do
let projectId = "..."
tasks <- getProjectTasks projectId IncompletedTasks
print tasks
```

## Advanced Usage

This library implements the `Has`-class pattern for use in a `ReaderT`-style
application.

```hs
data App = App
{ -- ...
, appAsanaAccessKey :: ApiKey
}

instance HasAsanaAccessKey App where
asanaAccessKeyL = lens appAsanaAccessKey $ \x y -> x { appAsanaAccessKey = y }

loadApp :: IO App
loadApp = undefined

main :: IO ()
main = do
app <- loadApp
runStdoutLoggingT $ runReaderT run app

run :: (MonadLogger m, MonadReader env m, HasAsanaAccessKey env) => m ()
run = undefined
```

---

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