https://github.com/freckle/asana-hs
https://github.com/freckle/asana-hs
ghvm-managed
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/freckle/asana-hs
- Owner: freckle
- License: mit
- Created: 2022-06-09T17:49:04.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-12-15T00:37:50.000Z (6 months ago)
- Last Synced: 2025-12-17T15:16:57.267Z (6 months ago)
- Topics: ghvm-managed
- Language: Haskell
- Homepage:
- Size: 52.7 KB
- Stars: 0
- Watchers: 9
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
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)