packages feed

copr-api 0.1.0 → 0.2.0

raw patch · 5 files changed

+115/−44 lines, 5 filesdep −bytestringdep −directoryPVP ok

version bump matches the API change (PVP)

Dependencies removed: bytestring, directory

API changes (from Hackage documentation)

- Web.Fedora.Copr.API: coprGetBuildPackageList :: String -> Query -> IO Value
+ Web.Fedora.Copr.API: coprGetBuildList :: String -> String -> String -> Query -> IO Object
+ Web.Fedora.Copr.API: coprMonitorProject :: String -> String -> String -> [String] -> IO Object
- Web.Fedora.Copr.API: coprGetBuildChroot :: String -> Int -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetBuildChroot :: String -> Int -> String -> IO Object
- Web.Fedora.Copr.API: coprGetBuildChrootConfig :: String -> Int -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetBuildChrootConfig :: String -> Int -> String -> IO Object
- Web.Fedora.Copr.API: coprGetBuildChrootList :: String -> Int -> IO Value
+ Web.Fedora.Copr.API: coprGetBuildChrootList :: String -> Int -> IO Object
- Web.Fedora.Copr.API: coprGetPackage :: String -> String -> String -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetPackage :: String -> String -> String -> String -> IO Object
- Web.Fedora.Copr.API: coprGetPackageList :: String -> String -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetPackageList :: String -> String -> String -> IO Object
- Web.Fedora.Copr.API: coprGetProjectChroot :: String -> String -> String -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetProjectChroot :: String -> String -> String -> String -> IO Object
- Web.Fedora.Copr.API: coprGetProjectChrootBuildConfig :: String -> String -> String -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetProjectChrootBuildConfig :: String -> String -> String -> String -> IO Object
- Web.Fedora.Copr.API: coprGetProjectsList :: String -> String -> IO Value
+ Web.Fedora.Copr.API: coprGetProjectsList :: String -> String -> IO Object
- Web.Fedora.Copr.API: coprMockChrootList :: String -> IO Value
+ Web.Fedora.Copr.API: coprMockChrootList :: String -> IO Object
- Web.Fedora.Copr.API: coprSearchProjects :: String -> String -> IO Value
+ Web.Fedora.Copr.API: coprSearchProjects :: String -> String -> IO Object

Files

CHANGELOG.md view
@@ -2,5 +2,11 @@  `copr-hs` uses [PVP Versioning](https://pvp.haskell.org). +## 0.2.0 (2023-11-25)+- API functions now return Object instead of Value+- add coprMonitorProject+- coprGetBuildList replaces coprGetBuildPackageList+- haddock urls updated to point to main branch+ ## 0.1.0 (2021-12-29) - Initial Hackage release
README.md view
@@ -3,7 +3,7 @@ [![Hackage](https://img.shields.io/hackage/v/copr-api.svg?logo=haskell)](https://hackage.haskell.org/package/copr-api) [![Stackage Lts](http://stackage.org/package/copr-api/badge/lts)](http://stackage.org/lts/package/copr-api) [![Stackage Nightly](http://stackage.org/package/copr-api/badge/nightly)](http://stackage.org/nightly/package/copr-api)-[![GPL-3.0-only license](https://img.shields.io/badge/license-GPL--3.0--only-blue.svg)](LICENSE)+[![GPL-3.0-or-later license](https://img.shields.io/badge/license-GPL--3.0--or--later-blue.svg)](LICENSE)  Copr API client Haskell library 
copr-api.cabal view
@@ -1,6 +1,6 @@ cabal-version:       1.22 name:                copr-api-version:             0.1.0+version:             0.2.0 synopsis:            Copr API client libary description:         Fedora Copr buildsystem client api library homepage:            https://github.com/juhp/copr-api-hs@@ -9,7 +9,7 @@ license-file:        LICENSE author:              Jens Petersen <petersen@redhat.com> maintainer:          Jens Petersen <petersen@redhat.com>-copyright:           2020-2021 Jens Petersen+copyright:           2020-2023 Jens Petersen category:            Network build-type:          Simple extra-doc-files:     README.md@@ -19,8 +19,11 @@                      GHC == 8.4.4                      GHC == 8.6.5                      GHC == 8.8.4-                     GHC == 8.10.5-                     GHC == 9.0.1+                     GHC == 8.10.7+                     GHC == 9.0.2+                     GHC == 9.2.8+                     GHC == 9.4.8+                     GHC == 9.6.3  source-repository head   type:                git@@ -35,8 +38,6 @@   build-depends:                 base >= 4.7 && <5               , aeson-              , bytestring-              , directory               , http-query               , text               , unordered-containers
src/Web/Fedora/Copr.hs view
@@ -21,12 +21,13 @@ #else import qualified Data.HashMap.Lazy as M #endif-import Data.List (sort)+import Data.List (sortBy)+import Data.Ord (comparing, Down(Down)) import Data.Text (Text)  import Web.Fedora.Copr.API --- | Get the list of chroot of a user's copr project+-- | Get list of chroots of a user's copr project, sorted in descending order. coprChroots :: String -- ^ server             -> String -- ^ owner             -> String -- ^ project@@ -38,7 +39,7 @@         case lookupKey "error" proj of           Just err -> error err           Nothing -> return []-    Just obj -> return $ (reverse . sort . map toText . M.keys) obj+    Just obj -> return $ (sortBy (comparing Down) . map toText . M.keys) obj #if !MIN_VERSION_aeson(2,0,0)       where toText = id #endif
src/Web/Fedora/Copr/API.hs view
@@ -15,11 +15,12 @@   , coprGetBuild   , coprGetBuildSourceChroot   , coprGetBuildSourceConfig-  , coprGetBuildPackageList+  , coprGetBuildList   , coprGetBuildChroot   , coprGetBuildChrootList   , coprGetBuildChrootConfig   , coprMockChrootList+  , coprMonitorProject   , coprGetPackage   , coprGetPackageList   , coprGetProjectChroot@@ -34,14 +35,18 @@ where  import Data.Aeson.Types+import Data.List (intercalate) import Network.HTTP.Query  -- # Projects  -- | List project details ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/project.py#_9-coprGetProject :: String -> String -> String -> IO Object+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/project.py#_9+coprGetProject :: String -- ^ server+               -> String -- ^ owner+               -> String -- ^ project+               -> IO Object coprGetProject server owner project = do   let path = "project"       params = [makeItem "ownername" owner, makeItem "projectname" project]@@ -49,8 +54,10 @@  -- | List projects of owner ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/project.py#_26-coprGetProjectsList :: String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/project.py#_37+coprGetProjectsList :: String -- ^ server+                    -> String -- ^ owner+                    -> IO Object -- FIXME limit=int or maybe pagination? coprGetProjectsList server owner = do   let path = "project/list"@@ -59,8 +66,10 @@  -- | search projects by query string ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/project.py#_43-coprSearchProjects :: String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/project.py#_43+coprSearchProjects :: String -- ^ server+                   -> String -- ^ query+                   -> IO Object coprSearchProjects server query = do   let path = "project/search"       params = makeKey "query" query@@ -70,58 +79,80 @@  -- | get build ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build.py#_10-coprGetBuild :: String -> Int -> IO Object+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build.py#_10+coprGetBuild :: String -- ^ server+             -> Int -- ^ build id+             -> IO Object coprGetBuild server bid = do   let path = "build" +/+ show bid   queryCopr server path []  -- | get srpm build ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build.py#_22-coprGetBuildSourceChroot :: String -> Int -> IO Object+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build.py#_22+coprGetBuildSourceChroot :: String -- ^ server+                         -> Int -- ^ build id+                         -> IO Object coprGetBuildSourceChroot server bid = do   let path = "build/source-chroot" +/+ show bid   queryCopr server path []  -- | get build source config ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build.py#_34-coprGetBuildSourceConfig :: String -> Int -> IO Object+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build.py#_34+coprGetBuildSourceConfig :: String -- ^ server+                         -> Int -- ^ build id+                         -> IO Object coprGetBuildSourceConfig server bid = do   let path = "build/source-build-config" +/+ show bid   queryCopr server path [] --- | get list of packages+-- | get list of builds ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build.py#_46-coprGetBuildPackageList :: String -> Query -> IO Value-coprGetBuildPackageList server params = do+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build.py#_56+--+-- @since 0.2.0+coprGetBuildList :: String -- ^ server+                 -> String -- ^ owner+                 -> String -- ^ project+                 -> Query -- ^ optional parameters ("packagename", "status", "pagination")+                 -> IO Object+coprGetBuildList server owner project params = do   let path = "build/list"-  queryCopr server path params+      params' = [makeItem "ownername" owner,+                makeItem "projectname" project] ++ params+  queryCopr server path params'  -- # Build chroot  -- | get build chroot ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build_chroot.py#_8-coprGetBuildChroot :: String -> Int -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build_chroot.py#_8+coprGetBuildChroot :: String -- ^ server+                   -> Int -- ^ build id+                   -> String -- ^ chroot+                   -> IO Object coprGetBuildChroot server bid chroot = do   let path = "build-chroot" +/+ show bid +/+ chroot   queryCopr server path []  -- | list of build chroots ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build_chroot.py#_25-coprGetBuildChrootList :: String -> Int -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build_chroot.py#_25+coprGetBuildChrootList :: String -- ^ server+                       -> Int -- ^ build id+                       -> IO Object coprGetBuildChrootList server bid = do   let path = "build-chroot/list" +/+ show bid   queryCopr server path []  -- | get build config for chroot ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/build_chroot.py#_44-coprGetBuildChrootConfig :: String -> Int -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/build_chroot.py#_44+coprGetBuildChrootConfig :: String -- ^ server+                         -> Int -- ^ build id+                         -> String -- ^ chroot+                         -> IO Object coprGetBuildChrootConfig server bid chroot = do   let path = "build-chroot/build-config" +/+ show bid +/+ chroot   queryCopr server path []@@ -130,8 +161,9 @@  -- | list of all available mock chroots ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/mock_chroot.py-coprMockChrootList :: String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/mock_chroot.py+coprMockChrootList :: String -- ^ server+                   -> IO Object coprMockChrootList server = do   let path = "mock-chroots/list"   queryCopr server path []@@ -140,8 +172,12 @@  -- | Get project package details ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/package.py#_9-coprGetPackage :: String -> String -> String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/package.py#_9+coprGetPackage :: String -- ^ server+               -> String -- ^ owner+               -> String -- ^ project+               -> String -- ^ package+               -> IO Object coprGetPackage server owner project package = do   let path = "package"       params = [makeItem "ownername" owner,@@ -151,8 +187,11 @@  -- | List project packages ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/package.py#_28-coprGetPackageList :: String -> String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/package.py#_28+coprGetPackageList :: String -- ^ server+                   -> String -- ^ owner+                   -> String -- ^ project+                   -> IO Object coprGetPackageList server owner project = do   let path = "package/list"       params = [makeItem "ownername" owner, makeItem "projectname" project]@@ -162,8 +201,12 @@  -- | get build chroot ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/project_chroot.py#_10-coprGetProjectChroot :: String -> String -> String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/project_chroot.py#_10+coprGetProjectChroot :: String -- ^ server+                     -> String -- ^ owner+                     -> String -- ^ project+                     -> String -- ^ chroot+                     -> IO Object coprGetProjectChroot server owner project chroot = do   let path = "project-chroot"       params = [makeItem "ownername" owner,@@ -173,8 +216,12 @@  -- | list of build chroots ----- https://pagure.io/copr/copr/blob/master/f/python/copr/v3/proxies/project_chroot.py#_29-coprGetProjectChrootBuildConfig :: String -> String -> String -> String -> IO Value+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/project_chroot.py#_29+coprGetProjectChrootBuildConfig :: String -- ^ server+                                -> String -- ^ owner+                                -> String -- ^ project+                                -> String -- ^ chroot+                                -> IO Object coprGetProjectChrootBuildConfig server owner project chroot = do   let path = "project-chroot/build-config"       params = [makeItem "ownername" owner,@@ -182,6 +229,22 @@                 makeItem "chrootname" chroot]   queryCopr server path params +-- | monitor info for the latest project chroot builds.+--+-- https://pagure.io/copr/copr/blob/main/f/python/copr/v3/proxies/monitor.py#_16+--+-- @since 0.2.0+coprMonitorProject :: String -- ^ server+                   -> String -- ^ owner+                   -> String -- ^ project+                   -> [String] -- ^ additional fields+                   -> IO Object+coprMonitorProject server owner project fields = do+  let path = "monitor"+      params = [makeItem "ownername" owner,+                makeItem "projectname" project,+                makeItem "additional_fields" (intercalate "," fields)]+  queryCopr server path params  -- | low-level API query queryCopr :: FromJSON a