gitlab-haskell 0.1.0.1 → 0.1.0.2
raw patch · 5 files changed
+44/−13 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- GitLab.Types: [stats] :: Commit -> Maybe Stats
- GitLab.Types: data Stats
- GitLab.Types: instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Stats
- GitLab.Types: instance GHC.Generics.Generic GitLab.Types.Stats
- GitLab.Types: instance GHC.Show.Show GitLab.Types.Stats
+ GitLab.API.Projects: userProjects' :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m (Maybe [Project])
+ GitLab.Types: ProjectStats :: Int -> Int -> Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> ProjectStats
+ GitLab.Types: [commit_count] :: ProjectStats -> Int
+ GitLab.Types: [commit_stats] :: Commit -> Maybe CommitStats
+ GitLab.Types: [job_artifacts_size] :: ProjectStats -> Maybe Int
+ GitLab.Types: [lfs_objects_size] :: ProjectStats -> Maybe Int
+ GitLab.Types: [packages_size] :: ProjectStats -> Maybe Int
+ GitLab.Types: [project_stats] :: Project -> Maybe ProjectStats
+ GitLab.Types: [repository_size] :: ProjectStats -> Int
+ GitLab.Types: [storage_size] :: ProjectStats -> Int
+ GitLab.Types: [wiki_size] :: ProjectStats -> Maybe Int
+ GitLab.Types: data CommitStats
+ GitLab.Types: data ProjectStats
+ GitLab.Types: instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.CommitStats
+ GitLab.Types: instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.ProjectStats
+ GitLab.Types: instance GHC.Classes.Eq GitLab.Types.ProjectStats
+ GitLab.Types: instance GHC.Generics.Generic GitLab.Types.CommitStats
+ GitLab.Types: instance GHC.Generics.Generic GitLab.Types.ProjectStats
+ GitLab.Types: instance GHC.Show.Show GitLab.Types.CommitStats
+ GitLab.Types: instance GHC.Show.Show GitLab.Types.ProjectStats
- GitLab.API.Projects: userProjects :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m (Maybe [Project])
+ GitLab.API.Projects: userProjects :: (MonadUnliftIO m, MonadIO m) => User -> GitLab m (Maybe [Project])
- GitLab.Types: Commit :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Maybe [Text] -> Maybe Pipeline -> Maybe Stats -> Maybe Text -> Commit
+ GitLab.Types: Commit :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Maybe [Text] -> Maybe Pipeline -> Maybe CommitStats -> Maybe Text -> Commit
- GitLab.Types: Project :: Int -> Maybe Text -> Text -> Text -> Text -> Text -> Text -> Maybe Text -> [Text] -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> Int -> Int -> Text -> Namespace -> Maybe Links -> Maybe Bool -> Maybe Text -> Maybe Owner -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe Project -> Maybe String -> Maybe Int -> Maybe Bool -> Maybe Text -> Maybe [Object] -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Text -> Maybe Permissions -> Project
+ GitLab.Types: Project :: Int -> Maybe Text -> Text -> Text -> Text -> Text -> Text -> Maybe Text -> [Text] -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> Int -> Int -> Text -> Namespace -> Maybe Links -> Maybe Bool -> Maybe Text -> Maybe Owner -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe Project -> Maybe String -> Maybe Int -> Maybe Bool -> Maybe Text -> Maybe [Object] -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Text -> Maybe Permissions -> Maybe ProjectStats -> Project
- GitLab.Types: Stats :: Int -> Int -> Int -> Stats
+ GitLab.Types: Stats :: Int -> Int -> Int -> CommitStats
- GitLab.Types: [additions] :: Stats -> Int
+ GitLab.Types: [additions] :: CommitStats -> Int
- GitLab.Types: [deletions] :: Stats -> Int
+ GitLab.Types: [deletions] :: CommitStats -> Int
- GitLab.Types: [total] :: Stats -> Int
+ GitLab.Types: [total] :: CommitStats -> Int
Files
- gitlab-haskell.cabal +1/−1
- src/GitLab/API/Commits.hs +1/−1
- src/GitLab/API/Projects.hs +14/−5
- src/GitLab/Types.hs +24/−4
- src/GitLab/WebRequests/GitLabWebCalls.hs +4/−2
gitlab-haskell.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name: gitlab-haskell category: Git-version: 0.1.0.1+version: 0.1.0.2 synopsis: A Haskell library for the GitLab web API description: This Haskell library queries and updates the database of a GitLab instance using the GitLab web API: <https://docs.gitlab.com/ee/api/>
src/GitLab/API/Commits.hs view
@@ -28,7 +28,7 @@ => Int -- ^ project ID -> GitLab m [Commit] projectCommits' projectId =- gitlab (commitsAddr projectId)+ gitlabWithAttrs (commitsAddr projectId) "&with_stats=true" where commitsAddr :: Int -> Text commitsAddr projId =
src/GitLab/API/Projects.hs view
@@ -31,7 +31,7 @@ -- | gets all projects. allProjects :: (MonadIO m) => GitLab m [Project] allProjects =- gitlab "/projects"+ gitlabWithAttrs "/projects" "&statistics=true" -- | gets all forks of a project. Supports use of namespaces. --@@ -54,7 +54,7 @@ -> GitLab m (Maybe Project) searchProjectId projectId = do let urlPath = T.pack ("/projects/" <> show projectId)- gitlabOne urlPath+ gitlabWithAttrsOne urlPath "&statistics=true" -- | gets all projects with the given project name. --@@ -74,10 +74,15 @@ projectsWithNameAndUser :: (MonadUnliftIO m, MonadIO m) => Text -> Text -> GitLab m (Maybe Project) projectsWithNameAndUser username projectName =- gitlabOne+ -- gitlabOne+ -- ("/projects/" <>+ -- T.decodeUtf8+ -- (urlEncode False (T.encodeUtf8 (username <> "/" <> projectName))))+ gitlabWithAttrsOne ("/projects/" <> T.decodeUtf8 (urlEncode False (T.encodeUtf8 (username <> "/" <> projectName))))+ "&statistics=true" -- | returns 'True' if a project has multiple committers, according to -- the email addresses of the commits.@@ -102,15 +107,19 @@ -- | gets all projects for a user's username. -- -- > userProjects "harry"-userProjects ::+userProjects' :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m (Maybe [Project])-userProjects username = do+userProjects' username = do userMaybe <- searchUser username case userMaybe of Nothing -> return Nothing Just usr -> Just <$> gitlab (urlPath (user_id usr)) where urlPath userId = "/users/" <> T.pack (show userId) <> "/projects"++userProjects ::+ (MonadUnliftIO m, MonadIO m) => User -> GitLab m (Maybe [Project])+userProjects theUser = userProjects' (user_username theUser) -- | gets the 'GitLab.Types.Project' against which the given 'Issue' -- was created.
src/GitLab/Types.hs view
@@ -21,13 +21,14 @@ , Owner(..) , Permissions(..) , Project(..)+ , ProjectStats(..) , User(..) , Milestone(..) , TimeStats(..) , Issue(..) , Pipeline(..) , Commit(..)- , Stats(..)+ , CommitStats(..) , Repository(..) , Job(..) , Artifact(..)@@ -172,8 +173,20 @@ , printing_merge_request_link_enabled :: Maybe Bool , merge_method:: Maybe Text , permissions :: Maybe Permissions+ , project_stats :: Maybe ProjectStats } deriving (Generic, Show, Eq) +data ProjectStats =+ ProjectStats+ { commit_count :: Int+ , storage_size :: Int+ , repository_size :: Int+ , wiki_size :: Maybe Int+ , lfs_objects_size :: Maybe Int+ , job_artifacts_size :: Maybe Int+ , packages_size :: Maybe Int+ } deriving (Generic, Show, Eq)+ -- | registered users. data User = User@@ -263,12 +276,12 @@ , message :: Text , parent_ids :: Maybe [Text] , last_pipeline :: Maybe Pipeline- , stats :: Maybe Stats+ , commit_stats :: Maybe CommitStats , commit_status :: Maybe Text } deriving (Generic, Show) -- | commit stats.-data Stats =+data CommitStats = Stats { additions :: Int , deletions :: Int@@ -496,6 +509,8 @@ bodyNoPrefix "merge_request_time_stats" = "time_stats" bodyNoPrefix "merge_request_squash" = "squash" bodyNoPrefix "merge_request_approvals_before_merge" = "approvals_before_merge"+bodyNoPrefix "project_stats" = "statistics"+bodyNoPrefix "commit_stats" = "stats" @@ -527,7 +542,7 @@ (defaultOptions { fieldLabelModifier = bodyNoPrefix }) -instance FromJSON Stats where+instance FromJSON CommitStats where parseJSON = genericParseJSON (defaultOptions { fieldLabelModifier = bodyNoPrefix })@@ -563,6 +578,11 @@ { fieldLabelModifier = bodyNoPrefix }) instance FromJSON Project where+ parseJSON = genericParseJSON+ (defaultOptions+ { fieldLabelModifier = bodyNoPrefix })++instance FromJSON ProjectStats where parseJSON = genericParseJSON (defaultOptions { fieldLabelModifier = bodyNoPrefix })
src/GitLab/WebRequests/GitLabWebCalls.hs view
@@ -64,7 +64,9 @@ parseBSOne :: FromJSON a => BSL.ByteString -> Maybe a parseBSOne bs = case eitherDecode bs of- Left s -> error (show s)+ Left _err -> Nothing+ -- useful when debugging+ -- error (show _err) Right xs -> Just xs parseBSMany :: FromJSON a => BSL.ByteString -> [a]@@ -102,7 +104,7 @@ else go (i+1) accum' gitlabReqOne :: (MonadIO m, FromJSON a) => Text -> Text -> GitLab m (Maybe a)-gitlabReqOne urlPath attrs =+gitlabReqOne urlPath attrs = do go where go = do