aur 5.0.1 → 6.0.0
raw patch · 4 files changed
+70/−31 lines, 4 filesdep +aurdep +tastydep +tasty-hunitdep −mtldep −transformersdep ~aesondep ~basedep ~http-client
Dependencies added: aur, tasty, tasty-hunit
Dependencies removed: mtl, transformers
Dependency ranges changed: aeson, base, http-client, http-client-tls, servant, servant-client, text
Files
- Linux/Arch/Aur/Rpc.hs +8/−14
- Linux/Arch/Aur/Types.hs +6/−6
- aur.cabal +24/−11
- tests/Test.hs +32/−0
Linux/Arch/Aur/Rpc.hs view
@@ -13,13 +13,11 @@ module Linux.Arch.Aur.Rpc ( info, search ) where -import Control.Monad.Trans (MonadIO, liftIO)-import Control.Monad.Trans.Except+import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Proxy import Data.Text (Text) import Linux.Arch.Aur.Types-import Network.HTTP.Client (newManager)-import Network.HTTP.Client.TLS+import Network.HTTP.Client (Manager) import Servant.API import Servant.Client @@ -47,16 +45,12 @@ rpcI :<|> rpcS = client api -- | Perform an @info@ call on one or more package names.-info :: MonadIO m => [Text] -> m [AurInfo]-info ps = do- manager <- liftIO $ newManager tlsManagerSettings- unwrap $ rpcI (Just "5") (Just "info") ps manager url+info :: MonadIO m => Manager -> [Text] -> m [AurInfo]+info m ps = unwrap m $ rpcI (Just "5") (Just "info") ps -- | Perform a @search@ call on a package name or description text.-search :: MonadIO m => Text -> m [AurInfo]-search p = do- manager <- liftIO $ newManager tlsManagerSettings- unwrap $ rpcS (Just "5") (Just "search") (Just p) manager url+search :: MonadIO m => Manager -> Text -> m [AurInfo]+search m p = unwrap m $ rpcS (Just "5") (Just "search") (Just p) -unwrap :: MonadIO m => ExceptT ServantError IO RPCResp -> m [AurInfo]-unwrap = liftIO . fmap (either (const []) _results) . runExceptT+unwrap :: MonadIO m => Manager -> ClientM RPCResp -> m [AurInfo]+unwrap m r = liftIO . fmap (either (const []) _results) $ runClientM r (ClientEnv m url)
Linux/Arch/Aur/Types.hs view
@@ -37,15 +37,15 @@ , pkgBaseIdOf :: Int , pkgBaseOf :: Text , aurVersionOf :: Text- , aurDescriptionOf :: Text- , urlOf :: Text+ , aurDescriptionOf :: Maybe Text+ , urlOf :: Maybe Text , aurVotesOf :: Int , popularityOf :: Float , dateObsoleteOf :: Maybe Int , aurMaintainerOf :: Maybe Text , submissionDateOf :: Int , modifiedDateOf :: Int- , urlPathOf :: Text+ , urlPathOf :: Maybe Text , dependsOf :: [Text] , makeDepsOf :: [Text] , optDepsOf :: [Text]@@ -61,15 +61,15 @@ v .: "PackageBaseID" <*> v .: "PackageBase" <*> v .: "Version" <*>- v .: "Description" <*>- v .: "URL" <*>+ v .:? "Description" <*>+ v .:? "URL" <*> v .: "NumVotes" <*> v .: "Popularity" <*> (v .: "OutOfDate" <|> pure Nothing) <*> (v .: "Maintainer" <|> pure Nothing) <*> v .: "FirstSubmitted" <*> v .: "LastModified" <*>- v .: "URLPath" <*>+ v .:? "URLPath" <*> v .:? "Depends" .!= [] <*> v .:? "MakeDepends" .!= [] <*> v .:? "OptDepends" .!= [] <*>
aur.cabal view
@@ -1,6 +1,6 @@ name: aur -version: 5.0.1+version: 6.0.0 synopsis: Access metadata from the Arch Linux User Repository. @@ -40,16 +40,29 @@ exposed-modules: Linux.Arch.Aur, Linux.Arch.Aur.Rpc, Linux.Arch.Aur.Types- + build-depends:- base >=4.8 && <4.9- , aeson >= 0.9.0.1- , http-client >= 0.4.27- , http-client-tls >= 0.2.2- , mtl >= 2.2.1- , servant >= 0.7 && < 0.8- , servant-client >= 0.7 && < 0.8- , text >=1.1 && <1.3- , transformers >= 0.4.2.0+ base >= 4.8 && < 4.10+ , aeson >= 0.9 && < 1.1+ , http-client >= 0.5 && < 0.6+ , servant >= 0.9 && < 0.10+ , servant-client >= 0.9 && < 0.10+ , text >= 1.2 && < 1.3 + default-language: Haskell2010++ ghc-options: -fwarn-unused-imports++test-suite aur-test+ type: exitcode-stdio-1.0++ build-depends: aur+ , base >= 4.8 && < 4.10+ , tasty >= 0.11 && < 0.12+ , tasty-hunit >= 0.9 && < 0.10+ , http-client >= 0.5 && < 0.6+ , http-client-tls >= 0.3 && < 0.4++ hs-source-dirs: tests+ main-is: Test.hs default-language: Haskell2010
+ tests/Test.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE OverloadedStrings #-}++module Main where++import Linux.Arch.Aur+import Network.HTTP.Client+import Network.HTTP.Client.TLS+import Test.Tasty+import Test.Tasty.HUnit++---++suite :: Manager -> TestTree+suite m = testGroup "RPC Calls"+ [ testCase "info on existing package" $ infoTest m+ , testCase "info on nonexistant package" $ infoTest' m+ , testCase "search" $ searchTest m+ ]++infoTest :: Manager -> Assertion+infoTest m = info m ["aura"] >>= assert . not . null++infoTest' :: Manager -> Assertion+infoTest' m = info m ["aura1234567"] >>= assert . null++searchTest :: Manager -> Assertion+searchTest m = search m "aura" >>= assert . not . null++main :: IO ()+main = do+ m <- newManager tlsManagerSettings+ defaultMain $ suite m