@@ -24,7 +24,7 @@ module Distribution.Server.Features.Core (
24
24
25
25
-- stdlib
26
26
import qualified Codec.Compression.GZip as GZip
27
- import Data.Aeson (Value (.. ))
27
+ import Data.Aeson (Value (.. ), toJSON )
28
28
import qualified Data.Aeson.Key as Key
29
29
import qualified Data.Aeson.KeyMap as KeyMap
30
30
import Data.ByteString.Lazy (ByteString )
@@ -40,6 +40,7 @@ import Distribution.Server.Prelude
40
40
import Distribution.Server.Features.Core.Backup
41
41
import Distribution.Server.Features.Core.State
42
42
import Distribution.Server.Features.Security.Migration
43
+ import Distribution.Server.Features.Security.SHA256 (sha256 )
43
44
import Distribution.Server.Features.Users
44
45
import Distribution.Server.Framework
45
46
import qualified Distribution.Server.Framework.BlobStorage as BlobStorage
@@ -728,12 +729,15 @@ coreFeature ServerEnv{serverBlobStore = store} UserFeature{..}
728
729
pkginfo <- packageInPath dpath >>= lookupPackageId
729
730
users <- queryGetUserDb
730
731
let revisions = pkgMetadataRevisions pkginfo
731
- revisionToObj rev (_, (utime, uid)) =
732
- let uname = userIdToName users uid in
732
+ revisionToObj rev (cabalFileText, (utime, uid)) =
733
+ let uname = userIdToName users uid
734
+ hash = sha256 (cabalFileByteString cabalFileText)
735
+ in
733
736
Object $ KeyMap. fromList
734
737
[ (Key. fromString " number" , Number (fromIntegral rev))
735
738
, (Key. fromString " user" , String (Text. pack (display uname)))
736
739
, (Key. fromString " time" , String (Text. pack (formatTime defaultTimeLocale " %Y-%m-%dT%H:%M:%SZ" utime)))
740
+ , (Key. fromString " sha256" , toJSON hash)
737
741
]
738
742
revisionsJson = Array $ Vec. imap revisionToObj revisions
739
743
return (toResponse revisionsJson)
0 commit comments