add published-at to registry response (#120)

* add published-at to registry response

* ensure we get the timestamp for the version being returned

* cleaup import

Co-authored-by: Lucy Cifferello <12953208+elvece@users.noreply.github.com>
This commit is contained in:
Aiden McClelland
2022-08-10 11:52:02 -06:00
committed by GitHub
parent e42cd787b4
commit 6127135a4d
2 changed files with 8 additions and 0 deletions

View File

@@ -25,8 +25,10 @@ import Startlude (
(&), (&),
(.), (.),
(<$>), (<$>),
UTCTime,
) )
import Yesod import Yesod
import Data.Time.Format.ISO8601 (iso8601Show)
dataUrl :: (ContentType, ByteString) -> Text dataUrl :: (ContentType, ByteString) -> Text
@@ -48,6 +50,7 @@ data PackageRes = PackageRes
, packageResLicense :: !Text , packageResLicense :: !Text
, packageResVersions :: !(NonEmpty Version) , packageResVersions :: !(NonEmpty Version)
, packageResDependencies :: !(HashMap PkgId DependencyRes) , packageResDependencies :: !(HashMap PkgId DependencyRes)
, packageResPublishedAt :: !UTCTime
} }
deriving (Show, Generic) deriving (Show, Generic)
@@ -66,6 +69,7 @@ instance ApiResponse PackageRes where
, "categories" .= packageResCategories , "categories" .= packageResCategories
, "versions" .= packageResVersions , "versions" .= packageResVersions
, "dependency-metadata" .= (apiEncode v <$> packageResDependencies) , "dependency-metadata" .= (apiEncode v <$> packageResDependencies)
, "published-at" .= (iso8601Show packageResPublishedAt)
] ]

View File

@@ -63,6 +63,7 @@ import Startlude (
fromMaybe, fromMaybe,
headMay, headMay,
id, id,
liftA2,
mappend, mappend,
maximumOn, maximumOn,
nonEmpty, nonEmpty,
@@ -216,6 +217,8 @@ constructPackageListApiRes PackageMetadata{..} dependencies = do
let pkgCategories = packageMetadataPkgCategories let pkgCategories = packageMetadataPkgCategories
let pkgVersions = packageMetadataPkgVersionRecords let pkgVersions = packageMetadataPkgVersionRecords
let pkgVersion = packageMetadataPkgVersion let pkgVersion = packageMetadataPkgVersion
-- get the version record for the version being returned - the version will always be in this list ie. it will always be not empty
let versionRecord = NE.head $ NE.fromList $ NE.filter (\v -> versionRecordNumber v == pkgVersion) pkgVersions
manifest <- manifest <-
flip runReaderT settings $ flip runReaderT settings $
(snd <$> getManifest pkgId pkgVersion) >>= \bs -> (snd <$> getManifest pkgId pkgVersion) >>= \bs ->
@@ -230,6 +233,7 @@ constructPackageListApiRes PackageMetadata{..} dependencies = do
, packageResLicense = basicRender $ LicenseR V0 pkgId , packageResLicense = basicRender $ LicenseR V0 pkgId
, packageResVersions = versionRecordNumber <$> pkgVersions , packageResVersions = versionRecordNumber <$> pkgVersions
, packageResDependencies = dependencies , packageResDependencies = dependencies
, packageResPublishedAt = ((liftA2 fromMaybe) versionRecordCreatedAt versionRecordUpdatedAt) versionRecord
} }