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}