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
|
import GHC.Generics
|
||||||
|
|
||||||
type P2PHttpAPI
|
type P2PHttpAPI
|
||||||
= "git-annex" :> "v3" :> "key" :> CaptureKey
|
= "git-annex" :> "v3" :> "key" :> CaptureKey :> GetAPI
|
||||||
:> GetAPI '[DataLengthHeader]
|
:<|> "git-annex" :> "v2" :> "key" :> CaptureKey :> GetAPI
|
||||||
:<|> "git-annex" :> "v2" :> "key" :> CaptureKey
|
:<|> "git-annex" :> "v1" :> "key" :> CaptureKey :> GetAPI
|
||||||
:> GetAPI '[DataLengthHeader]
|
:<|> "git-annex" :> "v0" :> "key" :> CaptureKey :> GetAPI
|
||||||
:<|> "git-annex" :> "v1" :> "key" :> CaptureKey
|
|
||||||
:> GetAPI '[DataLengthHeader]
|
|
||||||
:<|> "git-annex" :> "v0" :> "key" :> CaptureKey
|
|
||||||
:> GetAPI '[]
|
|
||||||
:<|> "git-annex" :> "v3" :> "checkpresent" :> CheckPresentAPI
|
:<|> "git-annex" :> "v3" :> "checkpresent" :> CheckPresentAPI
|
||||||
:<|> "git-annex" :> "v2" :> "checkpresent" :> CheckPresentAPI
|
:<|> "git-annex" :> "v2" :> "checkpresent" :> CheckPresentAPI
|
||||||
:<|> "git-annex" :> "v1" :> "checkpresent" :> CheckPresentAPI
|
:<|> "git-annex" :> "v1" :> "checkpresent" :> CheckPresentAPI
|
||||||
|
@ -78,7 +74,7 @@ type P2PHttpAPI
|
||||||
:<|> "git-annex" :> "v2" :> "keeplocked" :> KeepLockedAPI
|
:<|> "git-annex" :> "v2" :> "keeplocked" :> KeepLockedAPI
|
||||||
:<|> "git-annex" :> "v1" :> "keeplocked" :> KeepLockedAPI
|
:<|> "git-annex" :> "v1" :> "keeplocked" :> KeepLockedAPI
|
||||||
:<|> "git-annex" :> "v0" :> "keeplocked" :> KeepLockedAPI
|
:<|> "git-annex" :> "v0" :> "keeplocked" :> KeepLockedAPI
|
||||||
:<|> "git-annex" :> "key" :> CaptureKey :> GetAPI '[]
|
:<|> "git-annex" :> "key" :> CaptureKey :> GetGenericAPI
|
||||||
|
|
||||||
p2pHttpAPI :: Proxy P2PHttpAPI
|
p2pHttpAPI :: Proxy P2PHttpAPI
|
||||||
p2pHttpAPI = Proxy
|
p2pHttpAPI = Proxy
|
||||||
|
@ -91,7 +87,7 @@ serveP2pHttp
|
||||||
= serveGet
|
= serveGet
|
||||||
:<|> serveGet
|
:<|> serveGet
|
||||||
:<|> serveGet
|
:<|> serveGet
|
||||||
:<|> serveGet0
|
:<|> serveGet
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent
|
||||||
|
@ -117,16 +113,21 @@ serveP2pHttp
|
||||||
:<|> serveKeepLocked
|
:<|> serveKeepLocked
|
||||||
:<|> serveKeepLocked
|
:<|> 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
|
= ClientUUID Optional
|
||||||
:> ServerUUID Optional
|
:> ServerUUID Optional
|
||||||
:> BypassUUIDs
|
:> BypassUUIDs
|
||||||
:> AssociatedFileParam
|
:> AssociatedFileParam
|
||||||
:> OffsetParam
|
:> OffsetParam
|
||||||
:> StreamGet NoFraming OctetStream
|
:> StreamGet NoFraming OctetStream
|
||||||
(Headers headers (SourceIO B.ByteString))
|
(Headers '[DataLengthHeader] (SourceIO B.ByteString))
|
||||||
|
|
||||||
serveGet
|
serveGet
|
||||||
:: B64Key
|
:: B64Key
|
||||||
|
@ -138,16 +139,6 @@ serveGet
|
||||||
-> Handler (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
-> Handler (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
||||||
serveGet = undefined
|
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
|
clientGet
|
||||||
:: P2P.ProtocolVersion
|
:: P2P.ProtocolVersion
|
||||||
-> B64Key
|
-> B64Key
|
||||||
|
@ -157,14 +148,14 @@ clientGet
|
||||||
-> Maybe B64FilePath
|
-> Maybe B64FilePath
|
||||||
-> Maybe Offset
|
-> Maybe Offset
|
||||||
-> ClientM (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
-> ClientM (Headers '[DataLengthHeader] (S.SourceT IO B.ByteString))
|
||||||
clientGet (P2P.ProtocolVersion ver) k cu su bypass af o = case ver of
|
clientGet (P2P.ProtocolVersion ver) = case ver of
|
||||||
3 -> v3 k cu su bypass af o
|
3 -> v3
|
||||||
2 -> v2 k cu su bypass af o
|
2 -> v2
|
||||||
1 -> error "XXX" -- TODO v1
|
1 -> v1
|
||||||
0 -> error "XXX" -- TODO v0
|
0 -> v0
|
||||||
_ -> error "unsupported protocol version"
|
_ -> error "unsupported protocol version"
|
||||||
where
|
where
|
||||||
_ :<|> v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI
|
v3 :<|> v2 :<|> v1 :<|> v0 :<|> _ = client p2pHttpAPI
|
||||||
|
|
||||||
type CheckPresentAPI
|
type CheckPresentAPI
|
||||||
= KeyParam
|
= 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
|
other clients than git-annex easily download the content of keys from the
|
||||||
http server.
|
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.
|
When the key is not present on the server, this returns a 404 Not Found.
|
||||||
|
|
||||||
### GET /git-annex/v3/key/$key
|
### GET /git-annex/v3/key/$key
|
||||||
|
@ -145,7 +142,7 @@ Identical to v3.
|
||||||
|
|
||||||
### GET /git-annex/v0/key/$key
|
### 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.
|
Additional checking client-side will be required to validate the data.
|
||||||
|
|
||||||
### POST /git-annex/v3/checkpresent
|
### POST /git-annex/v3/checkpresent
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue