From 6e817f014d9c581882fffbc5d24ca7fac3ec6cf5 Mon Sep 17 00:00:00 2001 From: Joel Dudley Date: Wed, 17 Jan 2018 11:04:37 +0000 Subject: [PATCH] Adds default endpoints for the Corda development webserver. --- .../net/corda/webserver/api/APIServer.kt | 60 +++++++++++++++++-- .../corda/webserver/internal/APIServerImpl.kt | 16 ++++- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/webserver/src/main/kotlin/net/corda/webserver/api/APIServer.kt b/webserver/src/main/kotlin/net/corda/webserver/api/APIServer.kt index e275dd7c49..1a5200cf72 100644 --- a/webserver/src/main/kotlin/net/corda/webserver/api/APIServer.kt +++ b/webserver/src/main/kotlin/net/corda/webserver/api/APIServer.kt @@ -1,6 +1,9 @@ package net.corda.webserver.api -import net.corda.core.node.NodeInfo +import net.corda.core.contracts.ContractState +import net.corda.core.contracts.StateAndRef +import net.corda.core.identity.Party +import net.corda.core.utilities.NetworkHostAndPort import java.time.LocalDateTime import javax.ws.rs.GET import javax.ws.rs.Path @@ -34,10 +37,59 @@ interface APIServer { fun status(): Response /** - * Report this node's configuration and identities. + * Report this node's addresses. */ @GET - @Path("info") + @Path("addresses") @Produces(MediaType.APPLICATION_JSON) - fun info(): NodeInfo + fun addresses(): List + + /** + * Report this node's legal identities. + */ + @GET + @Path("identities") + @Produces(MediaType.APPLICATION_JSON) + fun identities(): List + + /** + * Report this node's platform version. + */ + @GET + @Path("platformversion") + @Produces(MediaType.APPLICATION_JSON) + fun platformVersion(): Int + + /** + * Report the peers on the network. + */ + @GET + @Path("peers") + @Produces(MediaType.APPLICATION_JSON) + fun peers(): List + + /** + * Report the notaries on the network. + */ + @GET + @Path("notaries") + @Produces(MediaType.APPLICATION_JSON) + fun notaries(): List + + /** + * Report this node's registered flows. + */ + @GET + @Path("flows") + @Produces(MediaType.APPLICATION_JSON) + fun flows(): List + + /** + * Report this node's vault states. + */ + @GET + @Path("states") + @Produces(MediaType.APPLICATION_JSON) + fun states(): List> + } \ No newline at end of file diff --git a/webserver/src/main/kotlin/net/corda/webserver/internal/APIServerImpl.kt b/webserver/src/main/kotlin/net/corda/webserver/internal/APIServerImpl.kt index 8d1d12c882..b166a143ea 100644 --- a/webserver/src/main/kotlin/net/corda/webserver/internal/APIServerImpl.kt +++ b/webserver/src/main/kotlin/net/corda/webserver/internal/APIServerImpl.kt @@ -1,6 +1,8 @@ package net.corda.webserver.internal +import net.corda.core.contracts.ContractState import net.corda.core.messaging.CordaRPCOps +import net.corda.core.messaging.vaultQueryBy import net.corda.webserver.api.APIServer import java.time.LocalDateTime import java.time.ZoneId @@ -18,5 +20,17 @@ class APIServerImpl(val rpcOps: CordaRPCOps) : APIServer { return Response.ok("started").build() } - override fun info() = rpcOps.nodeInfo() + override fun addresses() = rpcOps.nodeInfo().addresses + + override fun identities() = rpcOps.nodeInfo().legalIdentities + + override fun platformVersion() = rpcOps.nodeInfo().platformVersion + + override fun peers() = rpcOps.networkMapSnapshot().flatMap { it.legalIdentities } + + override fun notaries() = rpcOps.notaryIdentities() + + override fun flows() = rpcOps.registeredFlows() + + override fun states() = rpcOps.vaultQueryBy().states }