module Web.Pagure.HookReceiver.Post where
import Control.Monad.IO.Class
import qualified Data.Map as M
import qualified Data.Text as T
import Shelly (rm_rf, fromText, shelly)
import Web.Scotty
runPagureListener :: Int -> M.Map String [String -> IO ()] -> IO ()
runPagureListener port projectMapping =
scotty port $
post "/:projectname" $ do
name <- param "projectname"
case M.lookup name projectMapping of
Nothing -> text "Project not found."
Just hooks -> do
let hooks' = fmap (\f -> f name) hooks
liftIO (sequence_ hooks')
shelly $ rm_rf (fromText (T.pack ("clones/" ++ name)))
text "OK."