module Fedora.Packages.Releases
( Release (..)
, releases
, releases'
) where
import Fedora.Packages.API
import Fedora.Packages.Config
import Control.Applicative
import Control.Monad (mzero)
import Data.Aeson
import qualified Data.ByteString.Lazy as LS
import Data.Monoid
import qualified Data.Text as T
data Release = Release {
_release :: T.Text
, _stableVersion :: T.Text
, _testingVersion :: T.Text
} deriving (Eq, Show)
instance FromJSON Release where
parseJSON (Object v) = Release <$>
v .: "release"
<*> v .: "stable_version"
<*> v .: "testing_version"
parseJSON _ = mzero
data ReleasesFilter = ReleasesFilter {
_rfPackage :: T.Text
} deriving (Eq, Show)
instance ToJSON ReleasesFilter where
toJSON (ReleasesFilter s) = object [ "package" .= s ]
releases :: PackagesConfig
-> T.Text
-> IO (StandardResults Release)
releases c s =
let rJson = Query (ReleasesFilter s) 1 0
in
apiGet ("bodhi/query/query_active_releases/" <> LS.toStrict (encode rJson)) c
releases' :: PackagesConfig
-> T.Text
-> IO [Release]
releases' c q = _srRows <$> releases c q