Skip to content

freckle/asana-hs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1ee18b2 · Dec 16, 2024

History

12 Commits
Dec 16, 2024
Jan 19, 2024
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jan 19, 2024
Jan 19, 2024
Jun 9, 2022
Jun 9, 2022
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jun 9, 2022
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024
Jan 19, 2024

Repository files navigation

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