Skip to content

Commit

Permalink
Have /latest be an actual page, not a redirect
Browse files Browse the repository at this point in the history
  • Loading branch information
evancz committed Aug 22, 2016
1 parent d5370a8 commit 2995ff9
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions src/backend/Routes.hs
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,14 @@ package =
ifTop (ServeFile.pkgOverview pkg)
<|>
route
[ ("latest", redirectToLatest pkg)
, (":version", servePackageInfo pkg)
[ ("latest", serveLatestInfo pkg)
, (":version", servePackageInfo pkg =<< getParameter "version" Pkg.versionFromString)
]


servePackageInfo :: Pkg.Name -> Snap ()
servePackageInfo name =
do version <- getParameter "version" Pkg.versionFromString

let pkgDir = packageRoot name version
servePackageInfo :: Pkg.Name -> Pkg.Version -> Snap ()
servePackageInfo name version =
do let pkgDir = packageRoot name version
exists <- liftIO $ doesDirectoryExist pkgDir
when (not exists) pass

Expand All @@ -80,23 +78,19 @@ serveModule name version =
ServeFile.pkgDocs name version (Just moduleName)


redirectToLatest :: Pkg.Name -> Snap ()
redirectToLatest name =
serveLatestInfo :: Pkg.Name -> Snap ()
serveLatestInfo name =
do maybeVersions <- liftIO $ PkgSummary.readVersionsOf name
case maybeVersions of
Just versions@(_:_) ->
do let latestVersion = last (List.sort versions)
let url = "/packages/" ++ Pkg.toUrl name ++ "/" ++ Pkg.versionToString latestVersion ++ "/"
request <- getRequest
redirect (BS.append (BS.pack url) (rqPathInfo request))
servePackageInfo name (last (List.sort versions))

_ ->
httpStringError 404 $
"Could not find any versions of package " ++ Pkg.toString name




-- DIRECTORIES


Expand Down

0 comments on commit 2995ff9

Please sign in to comment.