les: more lespay API calls

This commit is contained in:
Zsolt Felfoldi 2019-12-16 15:13:35 +01:00
parent 936328ff68
commit c52605cac9
2 changed files with 80 additions and 4 deletions

View file

@ -453,13 +453,66 @@ func (api *PrivateLespayAPI) Connection(ctx context.Context, remote bool, node s
params := tsConnectionParams{requestedCapacity, stayConnected, paymentModule, setCap}
enc, _ := rlp.EncodeToBytes(&params)
var resEnc []byte
fmt.Println("makeCall", remote, node, enc)
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsConnection}, enc...))
if err != nil {
fmt.Println("makeCall err", err)
return
}
err = rlp.DecodeBytes(resEnc, &results)
fmt.Println("decode err", err)
return
}
func (api *PrivateLespayAPI) Deposit(ctx context.Context, remote bool, node string, paymentModule string, proofOfPayment []byte) (results tsDepositResults, err error) {
params := tsDepositParams{paymentModule, proofOfPayment}
enc, _ := rlp.EncodeToBytes(&params)
var resEnc []byte
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsDeposit}, enc...))
if err != nil {
return
}
err = rlp.DecodeBytes(resEnc, &results)
return
}
func (api *PrivateLespayAPI) BuyTokens(ctx context.Context, remote bool, node string, maxSpend, minReceive uint64, spendAll bool) (results tsBuyTokensResults, err error) {
params := tsBuyTokensParams{maxSpend, minReceive, spendAll}
enc, _ := rlp.EncodeToBytes(&params)
var resEnc []byte
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsBuyTokens}, enc...))
if err != nil {
return
}
err = rlp.DecodeBytes(resEnc, &results)
return
}
func (api *PrivateLespayAPI) GetBalance(ctx context.Context, remote bool, node string) (results tsGetBalanceResults, err error) {
var resEnc []byte
resEnc, err = api.makeCall(ctx, remote, node, []byte{tsGetBalance})
if err != nil {
return
}
err = rlp.DecodeBytes(resEnc, &results)
return
}
func (api *PrivateLespayAPI) Info(ctx context.Context, remote bool, node string) (results tsInfoResults, err error) {
var resEnc []byte
resEnc, err = api.makeCall(ctx, remote, node, []byte{tsInfo})
if err != nil {
return
}
err = rlp.DecodeBytes(resEnc, &results)
return
}
func (api *PrivateLespayAPI) ReceiverInfo(ctx context.Context, remote bool, node string, receiverIDs []string) (results tsReceiverInfoResults, err error) {
params := tsReceiverInfoParams(receiverIDs)
enc, _ := rlp.EncodeToBytes(&params)
var resEnc []byte
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsReceiverInfo}, enc...))
if err != nil {
return
}
err = rlp.DecodeBytes(resEnc, &results)
return
}

View file

@ -363,6 +363,19 @@ func (t *tokenSale) buyTokens(id enode.ID, maxSpend, minReceive uint64, spendAll
return
}
func (t *tokenSale) getBalance(id enode.ID) (pcBalance, tokenBalance uint64) {
t.lock.Lock()
defer t.lock.Unlock()
pb := t.clientPool.getPosBalance(id)
tokenBalance = pb.value
var meta tokenSaleMeta
if err := rlp.DecodeBytes([]byte(pb.meta), &meta); err == nil {
pcBalance = meta.pcBalance
}
return
}
func (t *tokenSale) info() (version, compatible uint, info keyValueList, receivers []string) {
t.lock.Lock()
defer t.lock.Unlock()
@ -436,6 +449,7 @@ func (t *tokenSaleMeta) DecodeRLP(s *rlp.Stream) error {
const (
tsInfo = iota
tsReceiverInfo
tsGetBalance
tsDeposit
tsBuyTokens
tsConnection
@ -449,6 +463,9 @@ type (
}
tsReceiverInfoParams []string
tsReceiverInfoResults []keyValueList
tsGetBalanceResults struct {
PcBalance, TokenBalance uint64
}
tsDepositParams struct {
PaymentModule string
ProofOfPayment []byte
@ -495,6 +512,12 @@ func (t *tokenSale) runCommand(cmd []byte, id enode.ID, freeID string) []byte {
results = t.receiverInfo(params)
res, _ = rlp.EncodeToBytes(&results)
}
case tsGetBalance:
var results tsGetBalanceResults
if len(cmd) == 1 {
results.PcBalance, results.TokenBalance = t.getBalance(id)
res, _ = rlp.EncodeToBytes(&results)
}
case tsDeposit:
var (
params tsDepositParams