bar20.gno

0.97 Kb ยท 48 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	cross(grc20reg.Register)(Token, "")
22}
23
24func Faucet() string {
25	crossing()
26
27	caller := std.PreviousRealm().Address()
28	if err := adm.Mint(caller, 1_000_000); err != nil {
29		return "error: " + err.Error()
30	}
31	return "OK"
32}
33
34func Render(path string) string {
35	parts := strings.Split(path, "/")
36	c := len(parts)
37
38	switch {
39	case path == "":
40		return Token.RenderHome()
41	case c == 2 && parts[0] == "balance":
42		owner := std.Address(parts[1])
43		balance := Token.BalanceOf(owner)
44		return ufmt.Sprintf("%d\n", balance)
45	default:
46		return "404\n"
47	}
48}