|
|
|
// ignore
|
|
|
|
// +build allcommands walletcmd
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"math/rand"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
var walletConfirmationCode string
|
|
|
|
var walletConfirmationUser string
|
|
|
|
var walletTransactionAmnt string
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
command := Command{
|
|
|
|
Cmd: []string{"wallet", "confirm"},
|
|
|
|
Description: "$user $amount / $user $confirmation - Send or confirm a wallet payment",
|
|
|
|
Help: "",
|
|
|
|
Exec: cmdWallet,
|
|
|
|
}
|
|
|
|
|
|
|
|
RegisterCommand(command)
|
|
|
|
}
|
|
|
|
|
|
|
|
func cmdWallet(cmd []string) {
|
|
|
|
if len(cmd) < 3 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if cmd[0] == "wallet" {
|
|
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
chars := []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
|
|
|
|
"abcdefghijklmnopqrstuvwxyz" +
|
|
|
|
"0123456789")
|
|
|
|
length := 8
|
|
|
|
var b strings.Builder
|
|
|
|
for i := 0; i < length; i++ {
|
|
|
|
b.WriteRune(chars[rand.Intn(len(chars))])
|
|
|
|
}
|
|
|
|
walletConfirmationCode = b.String()
|
|
|
|
walletConfirmationUser = cmd[1]
|
|
|
|
walletTransactionAmnt = cmd[2]
|
|
|
|
printInfo(fmt.Sprintf("To confirm sending %s to %s, type /confirm %s %s", cmd[2], cmd[1], cmd[1], walletConfirmationCode))
|
|
|
|
|
|
|
|
} else if cmd[0] == "confirm" {
|
|
|
|
if cmd[1] == walletConfirmationUser && cmd[2] == walletConfirmationCode {
|
|
|
|
txWallet := k.NewWallet()
|
|
|
|
wAPI, err := txWallet.SendXLM(walletConfirmationUser, walletTransactionAmnt, "")
|
|
|
|
if err != nil {
|
|
|
|
printError(fmt.Sprintf("There was an error with your wallet tx:\n\t%+v", err))
|
|
|
|
} else {
|
|
|
|
printInfo(fmt.Sprintf("You have sent %sXLM to %s with tx ID: %s", wAPI.Result.Amount, wAPI.Result.ToUsername, wAPI.Result.TxID))
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
printError("There was an error validating your confirmation. Your wallet has been untouched.")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|