github.com/0chain/gosdk@v1.17.11/winsdk/wallet.go (about)

     1  package main
     2  
     3  /*
     4  #include <stdlib.h>
     5  */
     6  import (
     7  	"C"
     8  )
     9  
    10  import (
    11  	"os"
    12  	"path/filepath"
    13  
    14  	"github.com/0chain/gosdk/zcncore"
    15  )
    16  
    17  // CreateWallet - create a new wallet, and save it to ~/.zcn/wallet.json
    18  // ## Outputs
    19  //
    20  //	{
    21  //	"error":"",
    22  //	"result":\"{}\"",
    23  //	}
    24  //
    25  //export CreateWallet
    26  func CreateWallet() *C.char {
    27  	w, err := zcncore.CreateWalletOffline()
    28  	if err != nil {
    29  		log.Error("win: ", err)
    30  		return WithJSON("", err)
    31  	}
    32  
    33  	d, err := getZcnWorkDir()
    34  	if err != nil {
    35  		log.Error("win: ", err)
    36  		return WithJSON("", err)
    37  	}
    38  
    39  	if err = os.WriteFile(filepath.Join(d, "wallet.json"), []byte(w), 0644); err != nil {
    40  		log.Error("win: ", err)
    41  		return WithJSON("", err)
    42  	}
    43  
    44  	return WithJSON(w, nil)
    45  }
    46  
    47  // RecoverWallet - recover the wallet, and save it to ~/.zcn/wallet.json
    48  // ## Outputs
    49  //
    50  //	{
    51  //	"error":"",
    52  //	"result":\"{}\"",
    53  //	}
    54  //
    55  //export RecoverWallet
    56  func RecoverWallet(mnemonic *C.char) *C.char {
    57  	w, err := zcncore.RecoverOfflineWallet(C.GoString(mnemonic))
    58  	if err != nil {
    59  		log.Error("win: ", err)
    60  		return WithJSON("", err)
    61  	}
    62  
    63  	d, err := getZcnWorkDir()
    64  	if err != nil {
    65  		log.Error("win: ", err)
    66  		return WithJSON("", err)
    67  	}
    68  
    69  	if err = os.WriteFile(filepath.Join(d, "wallet.json"), []byte(w), 0644); err != nil {
    70  		log.Error("win: ", err)
    71  		return WithJSON("", err)
    72  	}
    73  
    74  	return WithJSON(w, nil)
    75  }
    76  
    77  // GetWalletBalance - get wallet balance
    78  // ## Inputs
    79  // - clientID
    80  // ## Outputs
    81  //
    82  //	{
    83  //	"error":"",
    84  //	"result":\"0.00\"",
    85  //	}
    86  //
    87  //export GetWalletBalance
    88  func GetWalletBalance(clientID *C.char) *C.char {
    89  	b, _, err := zcncore.GetWalletBalance(C.GoString(clientID))
    90  	if err != nil {
    91  		log.Error("win: ", err)
    92  		return WithJSON(0, err)
    93  	}
    94  
    95  	return WithJSON(b.ToToken())
    96  }