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 +6/−0
- README.md +1/−1
- copr-api.cabal +7/−6
- src/Web/Fedora/Copr.hs +4/−3
- src/Web/Fedora/Copr/API.hs +97/−34
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 @@ [](https://hackage.haskell.org/package/copr-api) [](http://stackage.org/lts/package/copr-api) [](http://stackage.org/nightly/package/copr-api)-[](LICENSE)+[](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