packages feed

fedora-packages 0.0.1 → 0.0.2

raw patch · 4 files changed

+94/−2 lines, 4 files

Files

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