From 48aa0131bf33a88904c947ff9a69889583a7a7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Fri, 27 May 2022 13:23:32 +0200 Subject: [PATCH 1/2] fix: rpc: readd rpc.discover aliases --- cmd/lotus-worker/sealworker/rpc.go | 1 + gateway/handler.go | 2 ++ node/rpc.go | 2 ++ 3 files changed, 5 insertions(+) diff --git a/cmd/lotus-worker/sealworker/rpc.go b/cmd/lotus-worker/sealworker/rpc.go index f7e5ca90f..91f96d9a8 100644 --- a/cmd/lotus-worker/sealworker/rpc.go +++ b/cmd/lotus-worker/sealworker/rpc.go @@ -34,6 +34,7 @@ func WorkerHandler(authv func(ctx context.Context, token string) ([]auth.Permiss } rpcServer.Register("Filecoin", wapi) + rpcServer.AliasMethod("rpc.discover", "Filecoin.Discover") mux.Handle("/rpc/v0", rpcServer) mux.Handle("/rpc/streams/v0/push/{uuid}", readerHandler) diff --git a/gateway/handler.go b/gateway/handler.go index f8da5a5e1..d60d3003a 100644 --- a/gateway/handler.go +++ b/gateway/handler.go @@ -20,6 +20,8 @@ func Handler(a api.Gateway, opts ...jsonrpc.ServerOption) (http.Handler, error) serveRpc := func(path string, hnd interface{}) { rpcServer := jsonrpc.NewServer(opts...) rpcServer.Register("Filecoin", hnd) + rpcServer.AliasMethod("rpc.discover", "Filecoin.Discover") + m.Handle(path, rpcServer) } diff --git a/node/rpc.go b/node/rpc.go index 6a3e55115..a160fed19 100644 --- a/node/rpc.go +++ b/node/rpc.go @@ -71,6 +71,7 @@ func FullNodeHandler(a v1api.FullNode, permissioned bool, opts ...jsonrpc.Server serveRpc := func(path string, hnd interface{}) { rpcServer := jsonrpc.NewServer(opts...) rpcServer.Register("Filecoin", hnd) + rpcServer.AliasMethod("rpc.discover", "Filecoin.Discover") var handler http.Handler = rpcServer if permissioned { @@ -131,6 +132,7 @@ func MinerHandler(a api.StorageMiner, permissioned bool) (http.Handler, error) { readerHandler, readerServerOpt := rpcenc.ReaderParamDecoder() rpcServer := jsonrpc.NewServer(readerServerOpt) rpcServer.Register("Filecoin", mapi) + rpcServer.AliasMethod("rpc.discover", "Filecoin.Discover") m.Handle("/rpc/v0", rpcServer) m.Handle("/rpc/streams/v0/push/{uuid}", readerHandler) From 032e5989622b8740fee81828e683da0e3c114847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Fri, 27 May 2022 13:35:23 +0200 Subject: [PATCH 2/2] feat: gateway: OpenRPC support --- Makefile | 4 +++- api/api_gateway.go | 1 + api/docgen/docgen.go | 4 ++++ api/proxy_gen.go | 13 +++++++++++++ build/openrpc.go | 8 ++++++++ build/openrpc/full.json.gz | Bin 27589 -> 27590 bytes build/openrpc/gateway.json.gz | Bin 0 -> 4791 bytes build/openrpc/miner.json.gz | Bin 13813 -> 13816 bytes build/openrpc/worker.json.gz | Bin 4772 -> 4772 bytes build/openrpc_test.go | 1 + gateway/node.go | 5 +++++ 11 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 build/openrpc/gateway.json.gz diff --git a/Makefile b/Makefile index 6d5a466b5..1b547e808 100644 --- a/Makefile +++ b/Makefile @@ -330,7 +330,7 @@ docsgen-md-storage: docsgen-md-bin docsgen-md-worker: docsgen-md-bin ./docgen-md "api/api_worker.go" "Worker" "api" "./api" > documentation/en/api-v0-methods-worker.md -docsgen-openrpc: docsgen-openrpc-full docsgen-openrpc-storage docsgen-openrpc-worker +docsgen-openrpc: docsgen-openrpc-full docsgen-openrpc-storage docsgen-openrpc-worker docsgen-openrpc-gateway docsgen-openrpc-full: docsgen-openrpc-bin ./docgen-openrpc "api/api_full.go" "FullNode" "api" "./api" -gzip > build/openrpc/full.json.gz @@ -338,6 +338,8 @@ docsgen-openrpc-storage: docsgen-openrpc-bin ./docgen-openrpc "api/api_storage.go" "StorageMiner" "api" "./api" -gzip > build/openrpc/miner.json.gz docsgen-openrpc-worker: docsgen-openrpc-bin ./docgen-openrpc "api/api_worker.go" "Worker" "api" "./api" -gzip > build/openrpc/worker.json.gz +docsgen-openrpc-gateway: docsgen-openrpc-bin + ./docgen-openrpc "api/api_gateway.go" "Gateway" "api" "./api" -gzip > build/openrpc/gateway.json.gz .PHONY: docsgen docsgen-md-bin docsgen-openrpc-bin diff --git a/api/api_gateway.go b/api/api_gateway.go index be4b3b83c..d02c11a03 100644 --- a/api/api_gateway.go +++ b/api/api_gateway.go @@ -66,4 +66,5 @@ type Gateway interface { StateWaitMsg(ctx context.Context, cid cid.Cid, confidence uint64, limit abi.ChainEpoch, allowReplaced bool) (*MsgLookup, error) WalletBalance(context.Context, address.Address) (types.BigInt, error) Version(context.Context) (APIVersion, error) + Discover(context.Context) (apitypes.OpenRPCDocument, error) } diff --git a/api/docgen/docgen.go b/api/docgen/docgen.go index a15d4623e..f11b22c60 100644 --- a/api/docgen/docgen.go +++ b/api/docgen/docgen.go @@ -350,6 +350,10 @@ func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []r i = &api.WorkerStruct{} t = reflect.TypeOf(new(struct{ api.Worker })).Elem() permStruct = append(permStruct, reflect.TypeOf(api.WorkerStruct{}.Internal)) + case "Gateway": + i = &api.GatewayStruct{} + t = reflect.TypeOf(new(struct{ api.Gateway })).Elem() + permStruct = append(permStruct, reflect.TypeOf(api.GatewayStruct{}.Internal)) default: panic("unknown type") } diff --git a/api/proxy_gen.go b/api/proxy_gen.go index a40d665ce..479f1b9d5 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -512,6 +512,8 @@ type GatewayStruct struct { ChainReadObj func(p0 context.Context, p1 cid.Cid) ([]byte, error) `` + Discover func(p0 context.Context) (apitypes.OpenRPCDocument, error) `` + GasEstimateMessageGas func(p0 context.Context, p1 *types.Message, p2 *MessageSendSpec, p3 types.TipSetKey) (*types.Message, error) `` MpoolPush func(p0 context.Context, p1 *types.SignedMessage) (cid.Cid, error) `` @@ -3299,6 +3301,17 @@ func (s *GatewayStub) ChainReadObj(p0 context.Context, p1 cid.Cid) ([]byte, erro return *new([]byte), ErrNotSupported } +func (s *GatewayStruct) Discover(p0 context.Context) (apitypes.OpenRPCDocument, error) { + if s.Internal.Discover == nil { + return *new(apitypes.OpenRPCDocument), ErrNotSupported + } + return s.Internal.Discover(p0) +} + +func (s *GatewayStub) Discover(p0 context.Context) (apitypes.OpenRPCDocument, error) { + return *new(apitypes.OpenRPCDocument), ErrNotSupported +} + func (s *GatewayStruct) GasEstimateMessageGas(p0 context.Context, p1 *types.Message, p2 *MessageSendSpec, p3 types.TipSetKey) (*types.Message, error) { if s.Internal.GasEstimateMessageGas == nil { return nil, ErrNotSupported diff --git a/build/openrpc.go b/build/openrpc.go index ac951c172..a50d6f51e 100644 --- a/build/openrpc.go +++ b/build/openrpc.go @@ -52,3 +52,11 @@ func OpenRPCDiscoverJSON_Worker() apitypes.OpenRPCDocument { } return mustReadGzippedOpenRPCDocument(data) } + +func OpenRPCDiscoverJSON_Gateway() apitypes.OpenRPCDocument { + data, err := openrpcfs.ReadFile("openrpc/gateway.json.gz") + if err != nil { + panic(err) + } + return mustReadGzippedOpenRPCDocument(data) +} diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 63589e07a49c0450a4727be53fa594f47bc9a01a..78f7075610f2ffe457c37d8c373d6caed715dd99 100644 GIT binary patch delta 21475 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 delta 21447 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 diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..28620ae07f9fc9a97267fb0a077fdff17bf74ac4 GIT binary patch literal 4791 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 RUjP6A|NlZIvT?}m004PfVdek; literal 0 HcmV?d00001 diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index f9e8ea67efc30a16f7cb32f51faecd866ce0d017..a99436d5d7c9e7e8b0fef6b1d137319e7ba1b819 100644 GIT binary patch delta 13808 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 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index cfceac96fb9b340d63fdae18cf78a3e9ce777159..b3d7c01d25527b9d1e7b2609de75d4af7dae3061 100644 GIT binary patch delta 3282 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 diff --git a/build/openrpc_test.go b/build/openrpc_test.go index 967c7f988..a06a44f3d 100644 --- a/build/openrpc_test.go +++ b/build/openrpc_test.go @@ -16,6 +16,7 @@ func TestOpenRPCDiscoverJSON_Version(t *testing.T) { OpenRPCDiscoverJSON_Full, OpenRPCDiscoverJSON_Miner, OpenRPCDiscoverJSON_Worker, + OpenRPCDiscoverJSON_Gateway, } { doc := docFn() if got, ok := doc["openrpc"]; !ok || got != openRPCDocVersion { diff --git a/gateway/node.go b/gateway/node.go index 87a8551b1..f16d0acab 100644 --- a/gateway/node.go +++ b/gateway/node.go @@ -15,6 +15,7 @@ import ( "github.com/filecoin-project/go-state-types/dline" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/lotus/api" + apitypes "github.com/filecoin-project/lotus/api/types" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" @@ -144,6 +145,10 @@ func (gw *Node) checkTimestamp(at time.Time) error { return nil } +func (gw *Node) Discover(ctx context.Context) (apitypes.OpenRPCDocument, error) { + return build.OpenRPCDiscoverJSON_Gateway(), nil +} + func (gw *Node) Version(ctx context.Context) (api.APIVersion, error) { return gw.target.Version(ctx) }