From 7f47bf452ab98b6fa63f452ae4fa406c4af9de44 Mon Sep 17 00:00:00 2001 From: zgfzgf <1901989065@qq.com> Date: Fri, 6 Nov 2020 13:36:24 +0800 Subject: [PATCH 1/2] add chain base64 decode params --- cli/chain.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cli/chain.go b/cli/chain.go index e2d0ebb4ad6..0e870f0d2d8 100644 --- a/cli/chain.go +++ b/cli/chain.go @@ -3,6 +3,7 @@ package cli import ( "bytes" "context" + "encoding/base64" "encoding/hex" "encoding/json" "fmt" @@ -1246,14 +1247,14 @@ var chainDecodeCmd = &cli.Command{ } var chainDecodeParamsCmd = &cli.Command{ - Name: "params", - Usage: "Decode message params", + Name: "params", + Usage: "Decode message params", + ArgsUsage: "[toAddr method params]", Flags: []cli.Flag{ &cli.StringFlag{ Name: "tipset", }, }, - ArgsUsage: "[toAddr method hexParams]", Action: func(cctx *cli.Context) error { api, closer, err := GetFullNodeAPI(cctx) if err != nil { @@ -1276,9 +1277,12 @@ var chainDecodeParamsCmd = &cli.Command{ return xerrors.Errorf("parsing method id: %w", err) } - params, err := hex.DecodeString(cctx.Args().Get(2)) + params, err := base64.StdEncoding.DecodeString(cctx.Args().Get(2)) if err != nil { - return xerrors.Errorf("parsing hex params: %w", err) + params, err = hex.DecodeString(cctx.Args().Get(2)) + if err != nil { + return xerrors.Errorf("parsing params: %w", err) + } } ts, err := LoadTipSet(ctx, cctx, api) From d98e989417dc009349514f480f0667300a4a0575 Mon Sep 17 00:00:00 2001 From: zgfzgf <1901989065@qq.com> Date: Fri, 6 Nov 2020 15:02:08 +0800 Subject: [PATCH 2/2] chain decode params encoding --- cli/chain.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/cli/chain.go b/cli/chain.go index 0e870f0d2d8..0fa999d1746 100644 --- a/cli/chain.go +++ b/cli/chain.go @@ -1254,6 +1254,11 @@ var chainDecodeParamsCmd = &cli.Command{ &cli.StringFlag{ Name: "tipset", }, + &cli.StringFlag{ + Name: "encoding", + Value: "base64", + Usage: "specify input encoding to parse", + }, }, Action: func(cctx *cli.Context) error { api, closer, err := GetFullNodeAPI(cctx) @@ -1277,14 +1282,21 @@ var chainDecodeParamsCmd = &cli.Command{ return xerrors.Errorf("parsing method id: %w", err) } - params, err := base64.StdEncoding.DecodeString(cctx.Args().Get(2)) - if err != nil { + var params []byte + switch cctx.String("encoding") { + case "base64": + params, err = base64.StdEncoding.DecodeString(cctx.Args().Get(2)) + if err != nil { + return xerrors.Errorf("decoding base64 value: %w", err) + } + case "hex": params, err = hex.DecodeString(cctx.Args().Get(2)) if err != nil { - return xerrors.Errorf("parsing params: %w", err) + return xerrors.Errorf("decoding hex value: %w", err) } + default: + return xerrors.Errorf("unrecognized encoding: %s", cctx.String("encoding")) } - ts, err := LoadTipSet(ctx, cctx, api) if err != nil { return err