{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {-| Module : Issues Description : Queries about issues created against projects Copyright : (c) Rob Stewart, Heriot-Watt University, 2019 License : BSD3 Maintainer : robstewart57@gmail.com Stability : stable -} module GitLab.API.Issues where import Control.Monad.IO.Class import Control.Monad.IO.Unlift import qualified Data.Text as T import GitLab.WebRequests.GitLabWebCalls import GitLab.Types -- | returns all issues against a project. projectOpenedIssues :: (MonadIO m, MonadUnliftIO m) => Project -- ^ the project -> GitLab m [Issue] projectOpenedIssues = projectOpenedIssues' . project_id -- | returns all issues against a project given its project ID. projectOpenedIssues' :: (MonadIO m, MonadUnliftIO m) => Int -- ^ the project ID -> GitLab m [Issue] projectOpenedIssues' projectId = do let path = "/projects/" <> T.pack (show projectId) <> "/issues" gitlab path -- gitlabReq path "&state=opened" -- | gets all issues create by a user. userIssues :: (MonadIO m) => User -- ^ the user -> GitLab m [Issue] userIssues usr = gitlabWithAttrs addr attrs where addr = "/issues" attrs = T.pack $ "&author_id=" <> show (user_id usr) <> "&scope=all"