{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} -- | -- Module : Linux.Arch.Aur.Pkgbuild -- Copyright : (c) Colin Woodbury, 2014 -- License : GPL3 -- Maintainer: Colin Woodbury module Linux.Arch.Aur.Pkgbuild ( pkgbuild , pkgbuildUrl ) where import Control.Applicative ((<$>)) import Control.Lens ((^?)) import Control.Monad ((>=>)) import Control.Monad.Trans (MonadIO, liftIO) import Data.Monoid ((<>)) import Data.Text hiding (take) import Data.Text.Lazy.Encoding import Network.Wreq import System.FilePath (()) import Control.Exception (SomeException, catch) import qualified Data.Text.Lazy as TL --- type E = SomeException baseUrl :: String baseUrl = "https://aur.archlinux.org/packages/" -- | The location of a given package's PKGBUILD on the AUR servers. pkgbuildUrl :: String -> String pkgbuildUrl p = baseUrl take 2 p p "PKGBUILD" -- | The PKGBUILD of a given package, retrieved from the AUR servers. pkgbuild :: MonadIO m => String -> m (Maybe Text) pkgbuild p = e $ (rb >=> txt) <$> get (pkgbuildUrl p) where rb = (^? responseBody) txt = Just . TL.toStrict . decodeUtf8 e f = liftIO $ f `catch` (\(_ :: E) -> return Nothing)