mirror of https://github.com/voidlizard/hbs2
27 lines
737 B
Haskell
27 lines
737 B
Haskell
module HBS2.Git.Data.GK where
|
|
|
|
import HBS2.Git.Client.Prelude
|
|
|
|
import HBS2.Net.Auth.GroupKeySymm
|
|
import HBS2.Storage.Operations.ByteString
|
|
|
|
import Data.ByteString.Lazy qualified as LBS
|
|
|
|
type GK0 = GroupKey 'Symm HBS2Basic
|
|
|
|
readGK0 :: (MonadIO m, MonadError OperationError m) => AnyStorage -> HashRef -> m GK0
|
|
readGK0 sto h = do
|
|
runExceptT (readFromMerkle sto (SimpleKey (fromHashRef h)))
|
|
>>= orThrowError MissedBlockError
|
|
<&> deserialiseOrFail @GK0
|
|
>>= orThrowError UnsupportedFormat
|
|
|
|
loadGK0FromFile :: MonadIO m => FilePath -> m (Maybe GK0)
|
|
loadGK0FromFile fp = runMaybeT do
|
|
|
|
content <- liftIO (try @_ @IOError (LBS.readFile fp))
|
|
>>= toMPlus
|
|
|
|
toMPlus $ parseGroupKey @HBS2Basic (AsGroupKeyFile content)
|
|
|