{-# LANGUAGE CPP #-}
module Web.Fedora.Copr.API
( coprGetProject
, coprGetProjectsList
, coprSearchProjects
, coprGetBuild
, coprGetBuildSourceChroot
, coprGetBuildSourceConfig
, coprGetBuildPackageList
, coprGetBuildChroot
, coprGetBuildChrootList
, coprGetBuildChrootConfig
, coprMockChrootList
, coprGetPackage
, coprGetPackageList
, coprGetProjectChroot
, coprGetProjectChrootBuildConfig
, queryCopr
, maybeKey
, makeKey
, makeItem
, lookupKey
, lookupKey'
)
where
import Data.Aeson.Types
import Network.HTTP.Query
coprGetProject :: String -> String -> String -> IO Object
coprGetProject :: String -> String -> String -> IO Object
coprGetProject server :: String
server owner :: String
owner project :: String
project = do
let path :: String
path = "project"
params :: [QueryItem]
params = [String -> String -> QueryItem
makeItem "ownername" String
owner, String -> String -> QueryItem
makeItem "projectname" String
project]
String -> String -> [QueryItem] -> IO Object
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetProjectsList :: String -> String -> IO Value
coprGetProjectsList :: String -> String -> IO Value
coprGetProjectsList server :: String
server owner :: String
owner = do
let path :: String
path = "project/list"
params :: [QueryItem]
params = String -> String -> [QueryItem]
makeKey "ownername" String
owner
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprSearchProjects :: String -> String -> IO Value
coprSearchProjects :: String -> String -> IO Value
coprSearchProjects server :: String
server query :: String
query = do
let path :: String
path = "project/search"
params :: [QueryItem]
params = String -> String -> [QueryItem]
makeKey "query" String
query
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetBuild :: String -> Int -> IO Object
coprGetBuild :: String -> Int -> IO Object
coprGetBuild server :: String
server bid :: Int
bid = do
let path :: String
path = "build" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid
String -> String -> [QueryItem] -> IO Object
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetBuildSourceChroot :: String -> Int -> IO Object
coprGetBuildSourceChroot :: String -> Int -> IO Object
coprGetBuildSourceChroot server :: String
server bid :: Int
bid = do
let path :: String
path = "build/source-chroot" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid
String -> String -> [QueryItem] -> IO Object
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetBuildSourceConfig :: String -> Int -> IO Object
coprGetBuildSourceConfig :: String -> Int -> IO Object
coprGetBuildSourceConfig server :: String
server bid :: Int
bid = do
let path :: String
path = "build/source-build-config" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid
String -> String -> [QueryItem] -> IO Object
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetBuildPackageList :: String -> Query -> IO Value
coprGetBuildPackageList :: String -> [QueryItem] -> IO Value
coprGetBuildPackageList server :: String
server params :: [QueryItem]
params = do
let path :: String
path = "build/list"
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetBuildChroot :: String -> Int -> String -> IO Value
coprGetBuildChroot :: String -> Int -> String -> IO Value
coprGetBuildChroot server :: String
server bid :: Int
bid chroot :: String
chroot = do
let path :: String
path = "build-chroot" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid String -> String -> String
+/+ String
chroot
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetBuildChrootList :: String -> Int -> IO Value
coprGetBuildChrootList :: String -> Int -> IO Value
coprGetBuildChrootList server :: String
server bid :: Int
bid = do
let path :: String
path = "build-chroot/list" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetBuildChrootConfig :: String -> Int -> String -> IO Value
coprGetBuildChrootConfig :: String -> Int -> String -> IO Value
coprGetBuildChrootConfig server :: String
server bid :: Int
bid chroot :: String
chroot = do
let path :: String
path = "build-chroot/build-config" String -> String -> String
+/+ Int -> String
forall a. Show a => a -> String
show Int
bid String -> String -> String
+/+ String
chroot
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprMockChrootList :: String -> IO Value
coprMockChrootList :: String -> IO Value
coprMockChrootList server :: String
server = do
let path :: String
path = "mock-chroots/list"
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path []
coprGetPackage :: String -> String -> String -> String -> IO Value
coprGetPackage :: String -> String -> String -> String -> IO Value
coprGetPackage server :: String
server owner :: String
owner project :: String
project package :: String
package = do
let path :: String
path = "package"
params :: [QueryItem]
params = [String -> String -> QueryItem
makeItem "ownername" String
owner,
String -> String -> QueryItem
makeItem "projectname" String
project,
String -> String -> QueryItem
makeItem "packagename" String
package]
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetPackageList :: String -> String -> String -> IO Value
coprGetPackageList :: String -> String -> String -> IO Value
coprGetPackageList server :: String
server owner :: String
owner project :: String
project = do
let path :: String
path = "package/list"
params :: [QueryItem]
params = [String -> String -> QueryItem
makeItem "ownername" String
owner, String -> String -> QueryItem
makeItem "projectname" String
project]
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetProjectChroot :: String -> String -> String -> String -> IO Value
coprGetProjectChroot :: String -> String -> String -> String -> IO Value
coprGetProjectChroot server :: String
server owner :: String
owner project :: String
project chroot :: String
chroot = do
let path :: String
path = "project-chroot"
params :: [QueryItem]
params = [String -> String -> QueryItem
makeItem "ownername" String
owner,
String -> String -> QueryItem
makeItem "projectname" String
project,
String -> String -> QueryItem
makeItem "chrootname" String
chroot]
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
coprGetProjectChrootBuildConfig :: String -> String -> String -> String -> IO Value
coprGetProjectChrootBuildConfig :: String -> String -> String -> String -> IO Value
coprGetProjectChrootBuildConfig server :: String
server owner :: String
owner project :: String
project chroot :: String
chroot = do
let path :: String
path = "project-chroot/build-config"
params :: [QueryItem]
params = [String -> String -> QueryItem
makeItem "ownername" String
owner,
String -> String -> QueryItem
makeItem "projectname" String
project,
String -> String -> QueryItem
makeItem "chrootname" String
chroot]
String -> String -> [QueryItem] -> IO Value
forall a. FromJSON a => String -> String -> [QueryItem] -> IO a
queryCopr String
server String
path [QueryItem]
params
queryCopr :: FromJSON a
=> String
-> String
-> Query
-> IO a
queryCopr :: String -> String -> [QueryItem] -> IO a
queryCopr server :: String
server path :: String
path params :: [QueryItem]
params =
let url :: String
url = "https://" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
server String -> String -> String
+/+ "api_3" String -> String -> String
+/+ String
path
in String -> [QueryItem] -> IO a
forall (m :: * -> *) a.
(MonadIO m, FromJSON a) =>
String -> [QueryItem] -> m a
webAPIQuery String
url [QueryItem]
params