fedora-packages 0.0.1 → 0.0.2
raw patch · 4 files changed
+94/−2 lines, 4 files
Files
- fedora-packages.cabal +3/−2
- src/Fedora/Packages.hs +1/−0
- src/Fedora/Packages/Bugs.hs +87/−0
- src/Fedora/Packages/Lens.hs +3/−0
fedora-packages.cabal view
@@ -1,5 +1,5 @@ name: fedora-packages-version: 0.0.1+version: 0.0.2 synopsis: Haskell interface to the Fedora Packages webapp API. description: Provides access to the (<https://apps.fedoraproject.org/packages/ Fedora Packages>) API. homepage: https://github.com/CodeBlock/fedora-packages-hs@@ -8,7 +8,7 @@ author: Ricky Elrod maintainer: ricky@elrod.me copyright: (c) 2014 Ricky Elrod-category: Web+category: Fedora, Web build-type: Simple cabal-version: >=1.10 @@ -16,6 +16,7 @@ exposed-modules: Fedora.Packages , Fedora.Packages.API , Fedora.Packages.Builds+ , Fedora.Packages.Bugs , Fedora.Packages.Config , Fedora.Packages.Lens , Fedora.Packages.Releases
src/Fedora/Packages.hs view
@@ -45,6 +45,7 @@ ) where import Fedora.Packages.API as F+import Fedora.Packages.Bugs as F import Fedora.Packages.Builds as F import Fedora.Packages.Config as F import Fedora.Packages.Releases as F
+ src/Fedora/Packages/Bugs.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE OverloadedStrings #-}++-----------------------------------------------------------------------------+-- |+-- Copyright : (c) 2014 Ricky Elrod+-- License : BSD3+--+-- Maintainer : Ricky Elrod <ricky@elrod.me>+-- Stability : experimental+--+-- Provides functions and datatypes for accessing information about bugzilla+-- bugs filed for Fedora packages.+----------------------------------------------------------------------------++module Fedora.Packages.Bugs+ ( Bug (..)+ , BugsFilter (..)+ , Version (..)+ , bugs+ ) where++import Fedora.Packages.API+import Fedora.Packages.Config++import Control.Applicative+import Control.Monad (mzero)+import Data.Aeson hiding (Success)+import qualified Data.ByteString.Lazy as LS+import Data.Monoid hiding (All)+import qualified Data.Text as T++data Version =+ AllVersions+ | Rawhide+ | F20+ | F19+ | F18+ | EL7+ | EL6+ | EL5+ deriving (Eq, Show)++versionToText :: Version -> T.Text+versionToText AllVersions = ""+versionToText Rawhide = "rawhide"+versionToText F20 = "20"+versionToText F19 = "19"+versionToText F18 = "18"+versionToText EL7 = "7"+versionToText EL6 = "6"+versionToText EL5 = "5"++data BugsFilter = BugsFilter {+ _bPackage :: T.Text+ , _bVersion :: Version+ } deriving (Eq, Show)++instance ToJSON BugsFilter where+ toJSON (BugsFilter p v) = object [ "package" .= p+ , "version" .= versionToText v+ ]++data Bug = Bug {+ _bugClass :: T.Text+ , _bugDescription :: T.Text+ , _bugId :: Int+ , _bugLastModified :: T.Text+ , _bugRelease :: T.Text+ , _bugStatus :: T.Text+ } deriving (Eq, Show)++instance FromJSON Bug where+ parseJSON (Object v) = Bug <$>+ v .: "bug_class"+ <*> v .: "description"+ <*> v .: "id"+ <*> v .: "last_modified"+ <*> v .: "release"+ <*> v .: "status"+ parseJSON _ = mzero++-- | Query to find bugs for a given package.+bugs :: PackagesConfig -- ^ The configuration to use.+ -> Query BugsFilter -- ^ The search query to send.+ -> IO (StandardResults Bug)+bugs c s =+ apiGet ("bugzilla/query/query_bugs/" <> LS.toStrict (encode s)) c
src/Fedora/Packages/Lens.hs view
@@ -17,10 +17,13 @@ import Fedora.Packages.API import Fedora.Packages.Config+import Fedora.Packages.Bugs import Fedora.Packages.Builds import Fedora.Packages.Releases import Fedora.Packages.Search +makeLenses ''Bug+makeLenses ''BugsFilter makeLenses ''Build makeLenses ''BuildsFilter makeLenses ''CompletionTimeDisplay