how meta. (fork of alex's darcsden) — http://darcsden.com/
handler = withSession (\s -> route (routes s))
handler =
route
[ ("public", fileServe "public")
, (":owner/:repo/_darcs", repoServe "_darcs")
, (":owner/:repo/raw", repoServe "")
] <|>
withSession (\s -> route (routes s))
, ("public", fileServe "public")
, (":owner/:repo/_darcs", \_ r _ -> fileServe (repoDir (rOwner r) (rName r) ++ "/_darcs"))
, (":owner/:repo/raw", \_ r _ -> fileServe (repoDir (rOwner r) (rName r)))
import Snap.Util.FileServe
import System.FilePath
import DarcsDen.State.Util (repoDir)
repoServe :: String -> Snap ()
repoServe b = do
mo <- getParam "owner"
mr <- getParam "repo"
case (mo, mr) of
(Just owner, Just repo) ->
fileServe (repoDir (fromBS owner) (fromBS repo) </> b)
_ ->
notFound