bar20.gno

0.96 Kb ยท 46 lines
 1// Package bar20 is similar to gno.land/r/demo/foo20 but exposes a safe-object
 2// that can be used by `maketx run`, another contract importing foo20, and in
 3// the future when we'll support `maketx call Token.XXX`.
 4package bar20
 5
 6import (
 7	"std"
 8	"strings"
 9
10	"gno.land/p/demo/grc/grc20"
11	"gno.land/p/demo/ufmt"
12	"gno.land/r/demo/grc20reg"
13)
14
15var (
16	Token, adm = grc20.NewToken("Bar", "BAR", 4)
17	UserTeller = Token.CallerTeller()
18)
19
20func init() {
21	grc20reg.Register(Token.Getter(), "")
22}
23
24func Faucet() string {
25	caller := std.PreviousRealm().Address()
26	if err := adm.Mint(caller, 1_000_000); err != nil {
27		return "error: " + err.Error()
28	}
29	return "OK"
30}
31
32func Render(path string) string {
33	parts := strings.Split(path, "/")
34	c := len(parts)
35
36	switch {
37	case path == "":
38		return Token.RenderHome()
39	case c == 2 && parts[0] == "balance":
40		owner := std.Address(parts[1])
41		balance := Token.BalanceOf(owner)
42		return ufmt.Sprintf("%d\n", balance)
43	default:
44		return "404\n"
45	}
46}