finish get API
This commit is contained in:
parent
82d66ede5e
commit
69c4f07ab0
2 changed files with 21 additions and 33 deletions
49
P2P/Http.hs
49
P2P/Http.hs
|
@ -38,14 +38,10 @@ import Control.Concurrent.STM
|
|||
import GHC.Generics
|
||||
|
||||
type P2PHttpAPI
|
||||
= "git-annex" :> "v3" :> "key" :> CaptureKey
|
||||
:> GetAPI '[DataLengthHeader]
|
||||
:<|> "git-annex" :> "v2" :> "key" :> CaptureKey
|
||||
:> GetAPI '[DataLengthHeader]
|
||||
:<|> "git-annex" :> "v1" :> "key" :> CaptureKey
|
||||
:> GetAPI '[DataLengthHeader]
|
||||
:<|> "git-annex" :> "v0" :> "key" :> CaptureKey
|
||||
:> GetAPI '[]
|
||||
= "git-annex" :> "v3" :> "key" :> CaptureKey :> GetAPI
|
||||
:<|> "git-annex" :> "v2" :> "key" :> CaptureKey :> GetAPI
|
||||
:<|> "git-annex" :> "v1" :> "key" :> CaptureKey :> GetAPI
|
||||
:<|> "git-annex" :> "v0" :> "key" :> CaptureKey :> GetAPI
|
||||
:<|> "git-annex" :> "v3" :> "checkpresent" :> CheckPresentAPI
|
||||
:<|> "git-annex" :> "v2" :> "checkpresent" :> CheckPresentAPI
|
||||
:<|> "git-annex" :> "v1" :> "checkpresent" :> CheckPresentAPI
|
||||
|
@ -78,7 +74,7 @@ type P2PHttpAPI
|
|||
:<|> "git-annex" :> "v2" :> "keeplocked" :> KeepLockedAPI
|
||||
:<|> "git-annex" :> "v1" :> "keeplocked" :> KeepLockedAPI
|
||||
:<|> "git-annex" :> "v0" :> "keeplocked" :> KeepLockedAPI
|
||||
:<|> "git-annex" :> "key" :> CaptureKey :> GetAPI '[]
|
||||
:<|> "git-annex" :> "key" :> CaptureKey :> GetGenericAPI
|
||||
|
||||
p2pHttpAPI :: Proxy P2PHttpAPI
|
||||
p2pHttpAPI = Proxy
|
||||
|
@ -91,7 +87,7 @@ serveP2pHttp
|
|||
= serveGet
|
||||
:<|> serveGet
|
||||
:<|> serveGet
|
||||
:<|> serveGet0
|
||||
:<|> serveGet
|
||||
:<|> serveCheckPresent
|
||||
:<|> serveCheckPresent
|
||||
:<|> serveCheckPresent
|
||||
|
@ -117,16 +113,21 @@ serveP2pHttp
|
|||
:<|> serveKeepLocked
|
||||
:<|> serveKeepLocked
|
||||
:<|> serveKeepLocked
|
||||
:<|> serveGet0
|
||||
:<|> serveGetGeneric
|
||||
|
||||
type GetAPI headers
|
||||
type GetGenericAPI = StreamGet NoFraming OctetStream (SourceIO B.ByteString)
|
||||
|
||||
serveGetGeneric :: B64Key -> Handler (S.SourceT IO B.ByteString)
|
||||
serveGetGeneric = undefined
|
||||
|
||||
type GetAPI
|
||||
= ClientUUID Optional
|
||||
:> ServerUUID Optional
|
||||
:> BypassUUIDs
|
||||
:> AssociatedFileParam
|
||||
:> OffsetParam
|
||||
:> StreamGet NoFraming OctetStream
|
||||
(Headers headers (SourceIO B.ByteString))
|
||||
(Headers '[DataLengthHeader] (SourceIO B.ByteString))
|
||||
|
||||
serveGet
|
||||
:: B64Key
|
||||
|
@ -138,16 +139,6 @@ serveGet
|
|||
-> Handler (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
||||
serveGet = undefined
|
||||
|
||||
serveGet0
|
||||
:: B64Key
|
||||
-> Maybe (B64UUID ClientSide)
|
||||
-> Maybe (B64UUID ServerSide)
|
||||
-> [B64UUID Bypass]
|
||||
-> Maybe B64FilePath
|
||||
-> Maybe Offset
|
||||
-> Handler (Headers '[] (S.SourceT IO B.ByteString))
|
||||
serveGet0 = undefined
|
||||
|
||||
clientGet
|
||||
:: P2P.ProtocolVersion
|
||||
-> B64Key
|
||||
|
@ -157,14 +148,14 @@ clientGet
|
|||
-> Maybe B64FilePath
|
||||
-> Maybe Offset
|
||||
-> ClientM (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
||||
clientGet (P2P.ProtocolVersion ver) k cu su bypass af o = case ver of
|
||||
3 -> v3 k cu su bypass af o
|
||||
2 -> v2 k cu su bypass af o
|
||||
1 -> error "XXX" -- TODO v1
|
||||
0 -> error "XXX" -- TODO v0
|
||||
clientGet (P2P.ProtocolVersion ver) = case ver of
|
||||
3 -> v3
|
||||
2 -> v2
|
||||
1 -> v1
|
||||
0 -> v0
|
||||
_ -> error "unsupported protocol version"
|
||||
where
|
||||
_ :<|> v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI
|
||||
v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI
|
||||
|
||||
type CheckPresentAPI
|
||||
= KeyParam
|
||||
|
|
|
@ -79,9 +79,6 @@ It is not part of the P2P protocol per se, but is provided to let
|
|||
other clients than git-annex easily download the content of keys from the
|
||||
http server.
|
||||
|
||||
This behaves almost the same as `GET /git-annex/v0/key/$key`, although its
|
||||
behavior may change in later versions.
|
||||
|
||||
When the key is not present on the server, this returns a 404 Not Found.
|
||||
|
||||
### GET /git-annex/v3/key/$key
|
||||
|
@ -145,7 +142,7 @@ Identical to v3.
|
|||
|
||||
### GET /git-annex/v0/key/$key
|
||||
|
||||
Same as v3, except there is no X-git-annex-data-length header.
|
||||
Same as v3, except the X-git-annex-data-length header is not used.
|
||||
Additional checking client-side will be required to validate the data.
|
||||
|
||||
### POST /git-annex/v3/checkpresent
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue