packages feed

cltw-1.1.4: src/Cltw/Common.hs

-- Copyright: 2010 Dino Morelli
-- License: BSD3 (see LICENSE)
-- Author: Dino Morelli <dino@ui3.info>

module Cltw.Common
   where

import Control.Monad.Error
import Control.Monad.Reader
import Text.Printf

import Cltw.Opts


type Cltw a = ErrorT String (ReaderT Options IO) a

runCltw :: Options -> Cltw a -> IO (Either String a)
runCltw env ev = runReaderT (runErrorT ev) env


apiPrefix :: String
apiPrefix = "api.twitter.com/1/"


constructUri :: String -> Cltw String
constructUri apiCall = do
   account <- asks optUser
   mbPw <- asks optPassword

   return $ case mbPw of
      Just password -> printf "https://%s:%s@%s%s.xml"
         account password apiPrefix apiCall
      Nothing -> printf "http://%s%s/%s.xml" apiPrefix apiCall account