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/"
pkgbuildUrl :: String -> String
pkgbuildUrl p = baseUrl </> take 2 p </> p </> "PKGBUILD"
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)