diff --git a/src/Handler/Package/Api.hs b/src/Handler/Package/Api.hs index cb8f948..7804b86 100644 --- a/src/Handler/Package/Api.hs +++ b/src/Handler/Package/Api.hs @@ -25,8 +25,10 @@ import Startlude ( (&), (.), (<$>), + UTCTime, ) import Yesod +import Data.Time.Format.ISO8601 (iso8601Show) dataUrl :: (ContentType, ByteString) -> Text @@ -48,6 +50,7 @@ data PackageRes = PackageRes , packageResLicense :: !Text , packageResVersions :: !(NonEmpty Version) , packageResDependencies :: !(HashMap PkgId DependencyRes) + , packageResPublishedAt :: !UTCTime } deriving (Show, Generic) @@ -66,6 +69,7 @@ instance ApiResponse PackageRes where , "categories" .= packageResCategories , "versions" .= packageResVersions , "dependency-metadata" .= (apiEncode v <$> packageResDependencies) + , "published-at" .= (iso8601Show packageResPublishedAt) ] diff --git a/src/Handler/Package/V1/Index.hs b/src/Handler/Package/V1/Index.hs index ef42c8c..44ad549 100644 --- a/src/Handler/Package/V1/Index.hs +++ b/src/Handler/Package/V1/Index.hs @@ -81,6 +81,7 @@ import Startlude ( (<&>), (<>), (=<<), + liftA2, ) import UnliftIO (Concurrently (..), mapConcurrently) import Yesod ( @@ -92,6 +93,7 @@ import Yesod ( sendResponseStatus, ) import Yesod.Core (logWarn) +import Data.List.NonEmpty (head) data PackageReq = PackageReq @@ -230,6 +232,7 @@ constructPackageListApiRes PackageMetadata{..} dependencies = do , packageResLicense = basicRender $ LicenseR V0 pkgId , packageResVersions = versionRecordNumber <$> pkgVersions , packageResDependencies = dependencies + , packageResPublishedAt = ((liftA2 fromMaybe) versionRecordCreatedAt versionRecordUpdatedAt) (head pkgVersions) }