This is a refactor of samhofi.us/x/keybase/v2 that takes advantage of the libkeybase performance improvements.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.1 KiB

package keybase
import (
"encoding/json"
"errors"
"os/exec"
)
// walletAPIOut sends JSON requests to the wallet API and returns its response.
func walletAPIOut(keybasePath string, w WalletAPI) (WalletAPI, error) {
jsonBytes, _ := json.Marshal(w)
cmd := exec.Command(keybasePath, "wallet", "api", "-m", string(jsonBytes))
cmdOut, err := cmd.Output()
if err != nil {
return WalletAPI{}, err
}
var r WalletAPI
json.Unmarshal(cmdOut, &r)
if r.Error != nil {
return WalletAPI{}, errors.New(r.Error.Message)
}
return r, nil
}
// TxDetail returns details of a stellar transaction
func (k *Keybase) TxDetail(txid string) (WalletAPI, error) {
m := WalletAPI{
Params: &wParams{},
}
m.Method = "details"
m.Params.Options.Txid = txid
r, err := walletAPIOut(k.Path, m)
return r, err
}
// StellarAddress returns the primary stellar address of a given user
func (k *Keybase) StellarAddress(user string) (string, error) {
m := WalletAPI{
Params: &wParams{},
}
m.Method = "lookup"
m.Params.Options.Name = user
r, err := walletAPIOut(k.Path, m)
if err != nil {
return "", err
}
return r.Result.AccountID, err
}