From 14e0f778b7a3a0687dac41facb112cb5b0940981 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Jul 2024 11:50:44 -0400 Subject: [PATCH] simplify --- P2P/Http.hs | 32 +++++++++++--------------------- doc/todo/git-annex_proxies.mdwn | 5 +++-- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/P2P/Http.hs b/P2P/Http.hs index 2a9e0ecb5e..02a5600a8e 100644 --- a/P2P/Http.hs +++ b/P2P/Http.hs @@ -264,8 +264,8 @@ clientGet -> Maybe Offset -> Maybe Auth -> IO () -clientGet clientenv ver k su cu bypass af o auth = - withClientM (clientGet' su ver k cu bypass af o auth) clientenv $ \case +clientGet clientenv (ProtocolVersion ver) k su cu bypass af o auth = + withClientM (cli k cu bypass af o auth) clientenv $ \case Left err -> throwM err Right respheaders -> do let dl = case lookupResponseHeader @DataLengthHeader' respheaders of @@ -275,6 +275,15 @@ clientGet clientenv ver k su cu bypass af o auth = b <- S.unSourceT (getResponse respheaders) gatherByteString liftIO $ print "got it all, writing to file 'got'" L.writeFile "got" b + where + cli =case ver of + 3 -> v3 su V3 + 2 -> v2 su V2 + 1 -> v1 su V1 + 0 -> v0 su V0 + _ -> error "unsupported protocol version" + + v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI gatherByteString :: S.StepT IO B.ByteString -> IO L.ByteString gatherByteString = unsafeInterleaveIO . go @@ -285,25 +294,6 @@ gatherByteString = unsafeInterleaveIO . go go (S.Effect ms) = ms >>= go go (S.Yield v s) = LI.Chunk v <$> unsafeInterleaveIO (go s) -clientGet' - :: B64UUID ServerSide - -> ProtocolVersion - -> B64Key - -> B64UUID ClientSide - -> [B64UUID Bypass] - -> Maybe B64FilePath - -> Maybe Offset - -> Maybe Auth - -> ClientM (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString)) -clientGet' su (ProtocolVersion ver) = case ver of - 3 -> v3 su V3 - 2 -> v2 su V2 - 1 -> v1 su V1 - 0 -> v0 su V0 - _ -> error "unsupported protocol version" - where - v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI - type CheckPresentAPI = KeyParam :> CU Required diff --git a/doc/todo/git-annex_proxies.mdwn b/doc/todo/git-annex_proxies.mdwn index 047759c2e8..3ee8d45e06 100644 --- a/doc/todo/git-annex_proxies.mdwn +++ b/doc/todo/git-annex_proxies.mdwn @@ -28,8 +28,7 @@ Planned schedule of work: ## work notes -* http server and client are working, remaining - server API endpoints need wiring up and testing. +* Implement: servePut, servePutOffset, serveLockContent * I have a file `servant.hs` in the httpproto branch that works through some of the bytestring streaming issues. @@ -55,6 +54,8 @@ Planned schedule of work: * finalized HTTP P2P protocol draft 1, [[design/p2p_protocol_over_http/draft1]] +* implemented server and client for HTTP P2P protocol + ## items deferred until later for [[design/passthrough_proxy]] * Check annex.diskreserve when proxying for special remotes