From 0eaed261ea11060fc9644400c7f31f8c3ec1052b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 2 Aug 2014 17:25:16 -0400 Subject: hook: use ChunkedEncryptable --- Remote/Hook.hs | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) (limited to 'Remote/Hook.hs') diff --git a/Remote/Hook.hs b/Remote/Hook.hs index 74641f5aa..0668e2ca9 100644 --- a/Remote/Hook.hs +++ b/Remote/Hook.hs @@ -7,7 +7,6 @@ module Remote.Hook (remote) where -import qualified Data.ByteString.Lazy as L import qualified Data.Map as M import Common.Annex @@ -17,12 +16,9 @@ import Types.Creds import qualified Git import Config import Config.Cost -import Annex.Content import Annex.UUID import Remote.Helper.Special -import Remote.Helper.Encryptable -import Crypto -import Utility.Metered +import Remote.Helper.ChunkedEncryptable import Utility.Env type Action = String @@ -39,15 +35,15 @@ remote = RemoteType { gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen r u c gc = do cst <- remoteCost gc expensiveRemoteCost - return $ Just $ encryptableRemote c - (storeEncrypted hooktype $ getGpgEncParams (c,gc)) - (retrieveEncrypted hooktype) + return $ Just $ chunkedEncryptableRemote c + (simplyPrepare $ store hooktype) + (simplyPrepare $ retrieve hooktype) Remote { uuid = u, cost = cst, name = Git.repoDescribe r, - storeKey = store hooktype, - retrieveKeyFile = retrieve hooktype, + storeKey = storeKeyDummy, + retrieveKeyFile = retreiveKeyFileDummy, retrieveKeyFileCheap = retrieveCheap hooktype, removeKey = remove hooktype, hasKey = checkPresent r hooktype, @@ -118,30 +114,18 @@ runHook hook action k f a = maybe (return False) run =<< lookupHook hook action return False ) -store :: HookName -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool -store h k _f _p = sendAnnex k (void $ remove h k) $ \src -> +store :: HookName -> Storer +store h = fileStorer $ \k src _p -> runHook h "store" k (Just src) $ return True -storeEncrypted :: HookName -> [CommandParam] -> (Cipher, Key) -> Key -> MeterUpdate -> Annex Bool -storeEncrypted h gpgOpts (cipher, enck) k _p = withTmp enck $ \tmp -> - sendAnnex k (void $ remove h enck) $ \src -> do - liftIO $ encrypt gpgOpts cipher (feedFile src) $ - readBytes $ L.writeFile tmp - runHook h "store" enck (Just tmp) $ return True - -retrieve :: HookName -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex Bool -retrieve h k _f d _p = runHook h "retrieve" k (Just d) $ return True +retrieve :: HookName -> Retriever +retrieve h = fileRetriever $ \d k _p -> + unlessM (runHook h "retrieve" k (Just d) $ return True) $ + error "failed to retrieve content" retrieveCheap :: HookName -> Key -> FilePath -> Annex Bool retrieveCheap _ _ _ = return False -retrieveEncrypted :: HookName -> (Cipher, Key) -> Key -> FilePath -> MeterUpdate -> Annex Bool -retrieveEncrypted h (cipher, enck) _ f _p = withTmp enck $ \tmp -> - runHook h "retrieve" enck (Just tmp) $ liftIO $ catchBoolIO $ do - decrypt cipher (feedFile tmp) $ - readBytes $ L.writeFile f - return True - remove :: HookName -> Key -> Annex Bool remove h k = runHook h "remove" k Nothing $ return True -- cgit v1.2.3