Skip to content

Commit

Permalink
refactor(nodebuilder/share/cmd)!: Take block height instead of `Exten…
Browse files Browse the repository at this point in the history
…dedHeader` as argument for share cmds (#2872)

Co-authored-by: Bao <[email protected]>
Co-authored-by: heh im a handsome boi <[email protected]>

Replace extended headers with block height as an argument in shares cmd

**Issues close**

Close [#2848 ](#2848)

**Changes made**
- Replace all uses of `extended header` as an argument with block height in `nodebuilder/share/cmd/share.go.`
- Add logic to fetch header first with `block height` for
  • Loading branch information
bao1029p authored Oct 30, 2023
1 parent 62e1769 commit 2066478
Showing 1 changed file with 21 additions and 33 deletions.
54 changes: 21 additions & 33 deletions nodebuilder/share/cmd/share.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package cmd

import (
"context"
"encoding/hex"
"encoding/json"
"fmt"
"strconv"

"github.com/spf13/cobra"

rpc "github.com/celestiaorg/celestia-node/api/rpc/client"
cmdnode "github.com/celestiaorg/celestia-node/cmd"
"github.com/celestiaorg/celestia-node/header"
"github.com/celestiaorg/celestia-node/share"
Expand Down Expand Up @@ -39,13 +41,8 @@ var sharesAvailableCmd = &cobra.Command{
}
defer client.Close()

raw, err := parseJSON(args[0])
if err != nil {
return err
}
eh, err := getExtendedHeaderFromCmdArg(cmd.Context(), client, args[0])

var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand All @@ -72,7 +69,7 @@ var sharesAvailableCmd = &cobra.Command{
}

var getSharesByNamespaceCmd = &cobra.Command{
Use: "get-by-namespace [extended header, namespace]",
Use: "get-by-namespace (height | hash) namespace",
Short: "Gets all shares from an EDS within the given namespace.",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
Expand All @@ -82,13 +79,8 @@ var getSharesByNamespaceCmd = &cobra.Command{
}
defer client.Close()

raw, err := parseJSON(args[0])
if err != nil {
return err
}
eh, err := getExtendedHeaderFromCmdArg(cmd.Context(), client, args[0])

var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand All @@ -104,7 +96,7 @@ var getSharesByNamespaceCmd = &cobra.Command{
}

var getShare = &cobra.Command{
Use: "get-share [extended header, row, col]",
Use: "get-share (height | hash) row col",
Short: "Gets a Share by coordinates in EDS.",
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error {
Expand All @@ -114,13 +106,8 @@ var getShare = &cobra.Command{
}
defer client.Close()

raw, err := parseJSON(args[0])
if err != nil {
return err
}
eh, err := getExtendedHeaderFromCmdArg(cmd.Context(), client, args[0])

var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand Down Expand Up @@ -158,8 +145,8 @@ var getShare = &cobra.Command{
}

var getEDS = &cobra.Command{
Use: "get-eds [extended header]",
Short: "Gets the full EDS identified by the given extended header",
Use: "get-eds (height | hash)",
Short: "Gets the full EDS identified by the given block height",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
client, err := cmdnode.ParseClientFromCtx(cmd.Context())
Expand All @@ -168,13 +155,8 @@ var getEDS = &cobra.Command{
}
defer client.Close()

raw, err := parseJSON(args[0])
if err != nil {
return err
}
eh, err := getExtendedHeaderFromCmdArg(cmd.Context(), client, args[0])

var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand All @@ -184,8 +166,14 @@ var getEDS = &cobra.Command{
},
}

func parseJSON(param string) (json.RawMessage, error) {
var raw json.RawMessage
err := json.Unmarshal([]byte(param), &raw)
return raw, err
func getExtendedHeaderFromCmdArg(ctx context.Context, client *rpc.Client, arg string) (*header.ExtendedHeader, error) {
hash, err := hex.DecodeString(arg)
if err == nil {
return client.Header.GetByHash(ctx, hash)
}
height, err := strconv.ParseUint(arg, 10, 64)
if err != nil {
return nil, fmt.Errorf("can't parse the height/hash argument: %w", err)
}
return client.Header.GetByHeight(ctx, height)
}

0 comments on commit 2066478

Please sign in to comment.