packages feed

aur 2.0.4 → 3.0.0

raw patch · 4 files changed

+77/−44 lines, 4 filesdep +wreqdep −wreq-sbdep ~base

Dependencies added: wreq

Dependencies removed: wreq-sb

Dependency ranges changed: base

Files

Linux/Arch/Aur/Pkgbuild.hs view
@@ -13,12 +13,10 @@     , pkgbuild'     , pkgbuildUrl ) where -import           Control.Applicative ((<$>)) import           Control.Exception (SomeException, catch) import           Control.Lens ((^?)) import           Control.Monad ((>=>)) import           Control.Monad.Trans (MonadIO, liftIO)-import           Data.Monoid ((<>)) import           Data.Text hiding (take) import qualified Data.Text.Lazy as TL import           Data.Text.Lazy.Encoding@@ -30,11 +28,11 @@ type E = SomeException  baseUrl :: String-baseUrl = "https://aur.archlinux.org/packages/"+baseUrl = "https://aur4.archlinux.org/"  -- | The location of a given package's PKGBUILD on the AUR servers. pkgbuildUrl :: String -> String-pkgbuildUrl p = baseUrl </> take 2 p </> p </> "PKGBUILD"+pkgbuildUrl p = baseUrl </> "cgit/aur.git/plain/PKGBUILD?h=" ++ p  -- | The PKGBUILD of a given package, retrieved from the AUR servers. pkgbuild :: MonadIO m => String -> m (Maybe Text)
Linux/Arch/Aur/Rpc.hs view
@@ -7,22 +7,31 @@ -- Maintainer: Colin Woodbury <colingw@gmail.com>  module Linux.Arch.Aur.Rpc-       ( -- * Queries+       ( -- * AUR4 Queries          info        , multiinfo        , search        , msearch-       -- * As JSON+       -- * AUR4 Queries as JSON+       , infoJ+       , multiinfoJ+       , searchJ+       , msearchJ+       -- * Explicit API version/endpoint        , info'        , multiinfo'        , search'        , msearch'+       -- * Explicit API version/endpoint as JSON+       , infoJ'+       , multiinfoJ'+       , searchJ'+       , msearchJ'        -- * Pretty JSON        , pretty) where  import           Linux.Arch.Aur.Types -import           Control.Applicative ((<$>)) import           Control.Lens import           Control.Monad.Trans (MonadIO, liftIO) import           Data.Aeson (Value(..), FromJSON, Result(..), fromJSON)@@ -37,53 +46,79 @@  --- -rpcUrl :: String-rpcUrl = "https://aur.archlinux.org/rpc.php?"+aurUrl :: String+aurUrl = "https://aur.archlinux.org/rpc.php?" -apiVersion :: Text-apiVersion = "3"+aur4Url :: String+aur4Url = "https://aur4.archlinux.org/rpc.php?"  -- | Returns all information about one package.-info :: (MonadIO m, Functor m) => Text -> m (Maybe AurInfo)-info p = (>>= extract) <$> info' p---- | `info` call as Haskellised JSON.-info' :: (MonadIO m, Functor m) => Text -> m (Maybe Value)-info' pkg = (>>= (^? nth 0)) <$> multiinfo' [pkg]+info :: MonadIO m => Text -> m (Maybe AurInfo)+info p = (>>= extract) <$> infoJ p  -- | Like `info`, but can handle requests for multiple packages at once. -- More efficient than using `info` multiple times.-multiinfo :: (MonadIO m, Functor m) => [Text] -> m [AurInfo]-multiinfo p = mapArray <$> multiinfo' p---- | `multiinfo` call as Haskellised JSON.-multiinfo' :: MonadIO m => [Text] -> m (Maybe Value)-multiinfo' pkgs = rpc "multiinfo" pkgs "arg[]"+multiinfo :: MonadIO m => [Text] -> m [AurInfo]+multiinfo ps = mapArray <$> multiinfoJ ps  -- | Yields any matches to the input as `AurInfo`, but -- doesn't include dependency information.-search :: (MonadIO m, Functor m) => Text -> m [AurInfo]-search s = mapArray <$> search' s---- | `search` call as Haskellised JSON.-search' :: MonadIO m => Text -> m (Maybe Value)-search' query = rpc "search" [query] "arg"+search :: MonadIO m => Text -> m [AurInfo]+search s = mapArray <$> searchJ s  -- | Search the AUR by Maintainer name.-msearch :: (MonadIO m, Functor m) => Text -> m [AurInfo]-msearch m = mapArray <$> msearch' m+msearch :: MonadIO m => Text -> m [AurInfo]+msearch m = mapArray <$> msearchJ m +-- | `info` call as Haskellised JSON.+infoJ :: MonadIO m => Text -> m (Maybe Value)+infoJ p = (>>= (^? nth 0)) <$> multiinfoJ [p]++-- | `multiinfo` call as Haskellised JSON.+multiinfoJ :: MonadIO m => [Text] -> m (Maybe Value)+multiinfoJ ps = multiinfoJ' ps aur4Url "4"++-- | `search` call as Haskellised JSON.+searchJ :: MonadIO m => Text -> m (Maybe Value)+searchJ s = searchJ' s aur4Url "4"+ -- | `msearch` call as Haskellised JSON.-msearch' :: MonadIO m => Text -> m (Maybe Value)-msearch' maintainer = rpc "msearch" [maintainer] "arg"+msearchJ :: MonadIO m => Text -> m (Maybe Value)+msearchJ m = msearchJ' m aur4Url "4" +-- | `info` with explicit RPC endpoint and API version.+info' :: MonadIO m => Text -> String -> Text -> m (Maybe AurInfo)+info' p url ver = (>>= extract) <$> infoJ' p url ver++-- | `multiinfo` with explicit RPC endpoint and API version.+multiinfo' :: MonadIO m => [Text] -> String -> Text -> m [AurInfo]+multiinfo' ps url ver = mapArray <$> multiinfoJ' ps url ver++search' :: MonadIO m => Text -> String -> Text -> m [AurInfo]+search' s url ver = mapArray <$> searchJ' s url ver++msearch' :: MonadIO m => Text -> String -> Text -> m [AurInfo]+msearch' m url ver = mapArray <$> msearchJ' m url ver++infoJ' :: MonadIO m => Text -> String -> Text -> m (Maybe Value)+infoJ' p url ver = (>>= (^? nth 0)) <$> multiinfoJ' [p] url ver++multiinfoJ' :: MonadIO m => [Text] -> String -> Text -> m (Maybe Value)+multiinfoJ' ps url ver = rpc "multiinfo" ps "arg[]" url ver++searchJ' :: MonadIO m => Text -> String -> Text -> m (Maybe Value)+searchJ' s url ver = rpc "search" [s] "arg" url ver++msearchJ' :: MonadIO m => Text -> String -> Text -> m (Maybe Value)+msearchJ' m url ver = rpc "msearch" [m] "arg" url ver+ -- | Call the RPC. -- Doesn't fail elegantly when there is a connection failure.-rpc :: MonadIO m => Text -> [Text] -> Text -> m (Maybe Value)-rpc method args argLabel = liftIO (rpcResults <$> getWith opts rpcUrl)+rpc :: MonadIO m => Text -> [Text] -> Text -> String -> Text -> m (Maybe Value)+rpc method args argLabel url ver = liftIO (rpcResults <$> getWith opts url)     where opts = defaults & param "type"   .~ [method]                           & param argLabel .~ args-                          & param "v"      .~ [apiVersion]+                          & param "v"      .~ [ver]  rpcResults :: AsValue r => Response r -> Maybe Value rpcResults r = r ^? responseBody . key "results"@@ -101,6 +136,7 @@           f _           = Nothing  -- There must be a better way to do this.+-- Use lenses, child. mapArray :: FromJSON a => Maybe Value -> [a] mapArray (Just (Array v)) = catMaybes . V.toList . V.map extract $ v mapArray _                = []
Linux/Arch/Aur/Types.hs view
@@ -9,7 +9,6 @@ module Linux.Arch.Aur.Types     ( AurInfo(..) ) where -import Control.Applicative import Control.Monad (mzero) import Data.Aeson import Data.Text@@ -21,16 +20,16 @@                        , pkgBaseIdOf      :: Int                        , pkgBaseOf        :: Text                        , aurVersionOf     :: Text-                       , aurCategoryOf    :: Int                        , aurDescriptionOf :: Text                        , licenseOf        :: [Text]                        , urlOf            :: Text                        , aurVotesOf       :: Int+                       , popularityOf     :: Float                        , isOutOfDate      :: Bool                        , aurMaintainerOf  :: Maybe Text                        , submissionDatOf  :: Int                        , modifiedDateOf   :: Int-                       , aurTarballUrlOf  :: Text+                       , urlPathOf        :: Text                        , dependsOf        :: [Text]                        , makeDepsOf       :: [Text]                        , optDepsOf        :: [Text]@@ -44,12 +43,12 @@                            v .:  "PackageBaseID"      <*>                            v .:  "PackageBase"        <*>                            v .:  "Version"            <*>-                           v .:  "CategoryID"         <*>                            v .:  "Description"        <*>                            v .:? "License"     .!= [] <*>                            v .:  "URL"                <*>                            v .:  "NumVotes"           <*>-                           (f <$> (v .:  "OutOfDate")) <*>+                           v .:  "Popularity"         <*>+                           (f <$> (v .: "OutOfDate")) <*>                            v .:? "Maintainer"         <*>                            v .:  "FirstSubmitted"     <*>                            v .:  "LastModified"       <*>
aur.cabal view
@@ -4,7 +4,7 @@ -- The name of the package. name:                aur -version:             2.0.4+version:             3.0.0  synopsis:            Access metadata from the Arch Linux User Repository. @@ -61,7 +61,7 @@      other-extensions:    OverloadedStrings, ScopedTypeVariables   -  build-depends:       base >=4.7 && <4.9,+  build-depends:       base >=4.8 && <4.9,                        aeson >=0.7 && <1,                        aeson-pretty >=0.7 && <1,                        filepath,@@ -70,7 +70,7 @@                        mtl >=2.1 && <3,                        text >=1.1 && <1.3,                        vector >=0.10 && <0.11,-                       wreq-sb >= 0.4+                       wreq >=0.4      -- Directories containing source files.   -- hs-source-dirs: