module Redmine.Get ( getTimeEntries
, getTimeEntry
, getTimeEntriesForIssue
, getIssue
, getIssues
, getProjects
, getProjectForId
, getProject
, getVersions
, getUser
, expandOptions
, increaseQueryRange
) where
import Data.Monoid
import qualified Data.Map as Map
import Redmine.JSON
import Redmine.Types
import Redmine.Manager
import Redmine.Rest
import qualified Data.ByteString as S
import qualified Data.ByteString.Char8 as S8
import Network.HTTP.Conduit
import Network.HTTP.Base (RequestMethod(..))
import Network.HTTP.Client.TLS
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Maybe
import Debug.Trace
getTimeEntries :: RedmineMng -> ParamRest -> MaybeT IO [TimeEntry]
getTimeEntries mng param = MaybeT $ do
mngConn <- newManager tlsManagerSettings
res <- queryRedmineAvecOptions mng GET requete ( Map.union param initOpt) Nothing mngConn
return $ fmap time_entries res
where requete = "/time_entries.json"
getTimeEntry :: RedmineMng -> Integer -> MaybeT IO TimeEntry
getTimeEntry mng elemId =
fmap time_entry (MaybeT $ runQuery mng GET requete Nothing)
where requete = "/time_entries/" <> S8.pack (show elemId) <> ".json"
getTimeEntriesForIssue :: RedmineMng -> Integer-> MaybeT IO [TimeEntry]
getTimeEntriesForIssue mng issueid = MaybeT $ do
mngConn <- newManager tlsManagerSettings
res <- queryRedmineAvecOptions mng GET requete initOpt Nothing mngConn
return $ fmap time_entries res
where requete = "/time_entries/" <> S8.pack (show issueid) <> ".json"
getIssues :: RedmineMng -> ParamRest -> MaybeT IO [Issue]
getIssues mng param = MaybeT $ do
mngConn <- liftIO $ newManager tlsManagerSettings
res <- queryRedmineAvecOptions mng GET requete ( Map.union param initOpt) Nothing mngConn
return $ fmap issues res
where requete = "/issues.json"
getIssue :: RedmineMng -> Integer -> ParamRest -> MaybeT IO Issue
getIssue mng elemId param =
fmap issue (MaybeT $ runQuery mng GET requete Nothing)
where requete = "/issues/" <> S8.pack (show elemId) <> ".json" <> expandOptions param
getProjects :: RedmineMng -> MaybeT IO [Project]
getProjects mng = MaybeT $ do
mngConn <- newManager tlsManagerSettings
res <- queryRedmineAvecOptions mng GET requete initOpt Nothing mngConn
return $ fmap projects res
where requete = "/projects.json"
getProjectForId :: RedmineMng -> Integer -> MaybeT IO Project
getProjectForId mng elemId =
MaybeT $ runQuery mng GET requete Nothing
where requete = rmhost mng <> "/projects/" <> S8.pack (show elemId) <> ".json"
getProject :: RedmineMng -> S.ByteString -> MaybeT IO Project
getProject mng projId =
MaybeT $ runQuery mng GET requete Nothing
where requete = "/projects/" <> projId <> ".json"
getVersions :: RedmineMng
-> S.ByteString
-> MaybeT IO [Version]
getVersions mng proj =
fmap versions (MaybeT $ runQuery mng GET requete Nothing)
where requete = "/projects/" <> proj <> "/versions.json"
getVersion:: RedmineMng -> Integer -> ParamRest -> MaybeT IO Version
getVersion mng elemId param =
fmap version (MaybeT $ runQuery mng GET requete Nothing)
where requete = "/versions/" <> S8.pack (show elemId) <> ".json" <> expandOptions param
getUser :: RedmineMng -> Integer -> MaybeT IO User
getUser mng elemId =
fmap user (MaybeT $ runQuery mng GET requete Nothing)
where requete = "/users/" <> S8.pack (show elemId) <> ".json"