diff --git a/config/routes b/config/routes index 83d700b..24b30d2 100644 --- a/config/routes +++ b/config/routes @@ -13,6 +13,8 @@ /snapshot/#Text/*Texts OldSnapshotR GET +/api/v1/snapshot/#SnapName ApiV1SnapshotR GET + !/#SnapName SnapshotR: / StackageHomeR GET /cabal.config StackageCabalConfigR GET diff --git a/src/Handler/StackageHome.hs b/src/Handler/StackageHome.hs index 66ca1f0..41bd7ec 100644 --- a/src/Handler/StackageHome.hs +++ b/src/Handler/StackageHome.hs @@ -6,6 +6,7 @@ {-# LANGUAGE ViewPatterns #-} module Handler.StackageHome ( getStackageHomeR + , getApiV1SnapshotR , getStackageDiffR , getStackageCabalConfigR , getDocsR @@ -19,6 +20,12 @@ import Import import Stackage.Database import Stackage.Snapshot.Diff +getApiV1SnapshotR :: SnapName -> Handler Value +getApiV1SnapshotR name = track "Handler.StackageHome.getApiV1SnapshotR" $ do + Entity sid snapshot <- lookupSnapshot name >>= maybe notFound return + packages <- getPackagesForSnapshot sid + pure $ toJSON $ SnapshotInfo snapshot packages + getStackageHomeR :: SnapName -> Handler TypedContent getStackageHomeR name = track "Handler.StackageHome.getStackageHomeR" $ do