storageminer: GetStorageMinerAPI for cli

This commit is contained in:
Łukasz Magiera 2019-07-27 14:18:36 +02:00 committed by whyrusleeping
parent 4fb4835b35
commit 26232f0b9a
4 changed files with 42 additions and 13 deletions

View File

@ -68,7 +68,7 @@ type StorageMinerStruct struct {
CommonStruct
Internal struct {
StoreGarbageData func(context.Context) (uint64, error)
StoreGarbageData func(context.Context) (uint64, error) `perm:"write"`
}
}

View File

@ -27,19 +27,19 @@ const (
// ApiConnector returns API instance
type ApiConnector func() api.FullNode
func GetAPI(ctx *cli.Context) (api.FullNode, error) {
r, err := repo.NewFS(ctx.String("repo"))
func getAPI(ctx *cli.Context, repoFlag string) (string, http.Header, error) {
r, err := repo.NewFS(ctx.String(repoFlag))
if err != nil {
return nil, err
return "", nil, err
}
ma, err := r.APIEndpoint()
if err != nil {
return nil, xerrors.Errorf("failed to get api endpoint: %w", err)
return "", nil, xerrors.Errorf("failed to get api endpoint: %w", err)
}
_, addr, err := manet.DialArgs(ma)
if err != nil {
return nil, err
return "", nil, err
}
var headers http.Header
token, err := r.APIToken()
@ -50,7 +50,25 @@ func GetAPI(ctx *cli.Context) (api.FullNode, error) {
headers.Add("Authorization", "Bearer "+string(token))
}
return client.NewFullNodeRPC("ws://"+addr+"/rpc/v0", headers)
return "ws://" + addr + "/rpc/v0", headers, nil
}
func GetAPI(ctx *cli.Context) (api.FullNode, error) {
addr, headers, err := getAPI(ctx, "repo")
if err != nil {
return nil, err
}
return client.NewFullNodeRPC(addr, headers)
}
func GetStorageMinerAPI(ctx *cli.Context) (api.StorageMiner, error) {
addr, headers, err := getAPI(ctx, "storagerepo")
if err != nil {
return nil, err
}
return client.NewStorageMinerRPC(addr, headers)
}
// ReqContext returns context for cli execution. Calling it for the first time

View File

@ -154,7 +154,7 @@ var initCmd = &cli.Command{
return err
}
log.Infof("Waiting for confirmation")
log.Infof("Waiting for confirmation (TODO: actually wait)")
mw, err := api.ChainWaitMsg(ctx, signed.Cid())
if err != nil {

View File

@ -1,7 +1,9 @@
package main
import (
"fmt"
"net/http"
"os"
"github.com/multiformats/go-multiaddr"
"golang.org/x/xerrors"
@ -33,6 +35,13 @@ var runCmd = &cli.Command{
}
ctx := lcli.ReqContext(cctx)
go func() {
// a hack for now to handle sigint
<-ctx.Done()
os.Exit(0)
}()
v, err := nodeApi.Version(ctx)
if err != nil {
return err
@ -92,16 +101,18 @@ var storeGarbageCmd = &cli.Command{
Name: "store-garbage",
Usage: "store random data in a sector",
Action: func(cctx *cli.Context) error {
nodeApi, err := lcli.GetAPI(cctx)
nodeApi, err := lcli.GetStorageMinerAPI(cctx)
if err != nil {
return err
}
ctx := lcli.ReqContext(cctx)
_ = ctx
_ = nodeApi
// ???
// wait a second, i need the api handler for the storage miner...
sectorId, err := nodeApi.StoreGarbageData(ctx)
if err != nil {
return err
}
fmt.Println(sectorId)
return nil
},
}