mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-02-22 09:38:12 +00:00
Adds endpoint
This commit is contained in:
parent
040434aa19
commit
0da746de7c
@ -93,6 +93,26 @@ proc formatPeerRecord(peerRecord: PeerRecord): JsonNode =
|
||||
}
|
||||
return jobj
|
||||
|
||||
proc formatBlockExchangePeers(peers: OrderedTable[PeerId, BlockExcPeerCtx]): JsonNode =
|
||||
let jarray = newJArray()
|
||||
for peerId, peerContext in peers.pairs:
|
||||
let jblocksArray = newJArray()
|
||||
for cid, presence in peerContext.blocks:
|
||||
jblocksArray.add(%*{
|
||||
"cid": $presence.cid,
|
||||
"have": $presence.have,
|
||||
"price": $presence.price
|
||||
})
|
||||
|
||||
jarray.add(%*{
|
||||
"peerid": $peerId,
|
||||
"hasBlocks": jblocksArray,
|
||||
"wants": $peerContext.peerWants.len,
|
||||
"exchanged": $peerContext.exchanged,
|
||||
})
|
||||
|
||||
return jarray
|
||||
|
||||
proc initRestApi*(node: CodexNodeRef, conf: CodexConf): RestRouter =
|
||||
var router = RestRouter.init(validate)
|
||||
router.api(
|
||||
@ -321,6 +341,16 @@ proc initRestApi*(node: CodexNodeRef, conf: CodexConf): RestRouter =
|
||||
trace "debug/peer returning peer record"
|
||||
return RestApiResponse.response($json)
|
||||
|
||||
router.api(
|
||||
MethodGet,
|
||||
"/api/codex/v1/debug/blockexchange") do () -> RestApiResponse:
|
||||
let json = %*{
|
||||
"peers": formatBlockExchangePeers(node.engine.peers.peers),
|
||||
"taskQueue": $node.engine.taskQueue.len,
|
||||
"pendingBlocks": $node.engine.pendingBlocks.blocks.len
|
||||
}
|
||||
return RestApiResponse.response($json)
|
||||
|
||||
router.api(
|
||||
MethodGet,
|
||||
"/api/codex/v1/sales/slots") do () -> RestApiResponse:
|
||||
|
@ -294,10 +294,13 @@ method listBlocks*(
|
||||
await idleAsync()
|
||||
iter.finished = queryIter.finished
|
||||
if not queryIter.finished:
|
||||
if pair =? (await queryIter.next()) and cid =? pair.key:
|
||||
if pair =? (await queryIter.next()) and key =? pair.key:
|
||||
doAssert pair.data.len == 0
|
||||
trace "Retrieved record from repo", cid
|
||||
return Cid.init(cid.value).option
|
||||
trace "Retrieved record from repo", key
|
||||
without cid =? Cid.init(key.value):
|
||||
error "Could not init Cid for key", key
|
||||
raise Defect.newException("Repostore: Could not init Cid from key during listBlocks iteration.")
|
||||
return cid.option
|
||||
|
||||
return Cid.none
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user