From b0f7faa7dc5f9b0d664934f3665ffd5deeaf620f 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] 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 13766 -> 13770 bytes build/openrpc/worker.json.gz | Bin 4613 -> 4614 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 6d5a466b5d9..1b547e808cd 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 be4b3b83cb4..d02c11a039b 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 a15d4623ec1..f11b22c60a1 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 a40d665ce3d..479f1b9d569 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 ac951c17287..a50d6f51e78 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 bbf0bd3d4cd26016806458ef72a36e42e7776156..a1f74ca0364b027fd3d38d70479e5636151b2938 100644 GIT binary patch delta 12678 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 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index 0fc65597c91bdbdabd447d94c456cf737c94e828..72ab8e0b4beb09d3e8f2f3082f3b9e8df807b914 100644 GIT binary patch delta 2985 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 delta 2984 zcmV;Z3s>}pB!wif4+BD~4A_{mn1cz{IW{>VM_8)}aTMVPbszi?_SqJE*bON{5BaEJ z*GVuXtSj%1Gz2DIrP|I~S)sOt+7@cN0kz#9=95taJbyaMXQf{eH5QzVWG=;s@~G>VG~*q}=!a@_E$v5Cn<#-a1=4(LNK+dZzynO6g@2$c z5)+t?g0q3P3J(evr?t@PxRt|lF*a)Pq@SX+5*L1df#<7k zzORw5MeUh%HjZ@c)||-xV`QEOy1xl4D@!{P&u(?~UY5ehR&d_1_MSi1Y|~aMYl*gV zR>{Kb&U}|rjzrUDrv#Jcyjlfloo?-bFM2zxz%+~h*QYgQuS)+zEaiW%KP?RMUkmil z4#eXCR#oox*#)~69BO)`5#23zw~5pmZ1^$ zyqf22+Z-1H2`O#md#OC)%64Y)m#XZ^{?qp8wkyV_;1OCYW-l-1#CFjY^6ZssMBjVL zQmo)v`ihp9i?xRhXh~n|NIj&{dW?HD(teS0q=;f-lNPc3)htsPECPpaL0;PIrrc5i+qcUY$e~TWGDL1nJ zVJ%ak&@>%CX<&WzsT@~*?$JFzN-bHOJ?Pjqo1;l}b)rv(BXu%NkPVC8nqSW|e8C z=&;JPYWHm`)2eioD$^s9f6@RbZHkoUlqn}~Hmywgd9xj5T5A;=K&MTS(f~GXhLo%_ zRmH}>Gmfds{?jcnO2dwzdj3;Y(Urb3(T9Vf@Sh6*>7m)Qs{iybY#LLsCZy27rr7&; zWq&31{$lSh_WrMO??3bNpyp`OzM_u@qhV^j!m)ptzOIWB6)(fR6;<5(GJ%1|4Q4`ZDD zbR_Ubb#pq-NO|07=PD|4AvNojUQM zs#u}=%gJ0|HIP!|lFP)*_5Sg~BaT%_aZ<(QNHFem&VYAJUuk|)e9vFU7mP~Pc*a_C zy-B^2w~-54Q}mNn3q^nZLB379gmmF?S~I^+en#JT_V&;ku(!)>liynDr2@H4av7(H z;#M;I77$pP**^JRrBvF!8W;^{{mFPdJwY=~Inm7#I+<$7IGMnqI-2QIIDlhGmi|I` zzMw%;-rsBkT7E~F%)sZ6T>H+bfScJ*YPA)Fj(MXO<`a zq{5v8mC!;fcM@5=Z2#Yem}#RzF?&Q;LDV$3vm(21c~REVE!4XD+P@`e_qSg2O6(kR z+S)?qkNlt)0EsQ-YuZwZ>#&b_9d_w0PGV)cu`=0fjKs=_E98Y|NqCkTL&EyFlkp5w ze=x~M{a46B&_g%=DR*RYBK}luKC~aiSACTL$(;9yRI2N?fO~d?;;2-o1hor5J;ljY zPYC=mn|X+`by9U%y2d|H@OS-4e$-;6>)`$V4jO|OhE*8Ww`N#JN|9k*+K;^Fj)O`? zW)x0wXb>(wzYk1fzGY;MtXD2v<9?BF#XPCpG8U`Li&zoF8T;f+iD0ZJNQvu;U&jVGTPWzg@6~KY=Gn_*O)WOn?*t zQknrNYC$rugu$(|Bi~i7w<+IQ`+EEGUH=EcBw}~oIZ^Eb9?9kA*9b|3?Gv`|t=T@U zAirI`#CH2MZff{O$8 z-Uz=iip+|<{C*XOTO?PEOC!-bd-hM&*1bFJZM%*JO2MZ^!3kkMs>y#TJ+Yc~@AbMN z4m3?K}__0`;Afb#Bcr@|3Ln?MY-oe1~rqr$LMb>;F6po@lBD4yi~d)EF%`} zT@$A0iZ<5kUKaM^2Sgb$ZgC`P6T`@U8T953=w!dL5qTa(T67Vo6miPNz-GVTlbKMK zIe}(aD}R%=RS(5LFMM>R1muNpaACV0RjpjCS2R_-@|NtV)*tKv2s+A;YQf3&zaXan zTwz2xS#n!1mnjR~U)yT?dcWfR=d<6gtEpuh4<1+%iY-7F$VC9U2#_F7=K*&`h#%eC elVg82cho=|NSn?5=Kli#0RR7&{SFks4*>vHcHy=F diff --git a/build/openrpc_test.go b/build/openrpc_test.go index 967c7f98889..a06a44f3dce 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 87a8551b1f4..f16d0acab8b 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) }