asana: Asana API Client

[ library, mit, utils ] [ Propose Tags ]

Please see README.md


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0.0, 1.0.1.0, 1.0.1.1
Change log CHANGELOG.md
Dependencies aeson (>=1.3.1.1), aeson-casing (>=0.1.0.5), base (>=4.11.1.0 && <5), bytestring (>=0.10.8.2), hashable (>=1.2.7.0), http-conduit (>=2.3.2), iso8601-time (>=0.1.5), microlens (>=0.4.9.1), microlens-mtl (>=0.1.11.1), monad-logger (>=0.3.30), mtl (>=2.2.2), scientific (>=0.3.6.2), text (>=1.2.3.1), time (>=1.8.0.2), unliftio (>=0.2.9.0), unliftio-core (>=0.1.2.0), unordered-containers (>=0.2.9.0) [details]
License MIT
Author
Maintainer Freckle Education
Category Utils
Home page https://github.com/freckle/asana-hs#readme
Bug tracker https://github.com/freckle/asana-hs/issues
Source repo head: git clone https://github.com/freckle/asana-hs
Uploaded by PatrickBrisbin at 2024-01-19T18:47:10Z
Distributions NixOS:1.0.1.1
Downloads 239 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-01-19 [all 1 reports]

Readme for asana-1.0.1.1

[back to package description]

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:

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.

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 | LICENSE