PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidators

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/demo/profile

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
profile
Namespace
demo
Files
4 (gnomod.toml)
Exported functions
7
Module
gno.land/r/demo/profile
gno
0.9

Files (4)

  • gnomod.tomltoml
  • profile.gnogno
  • render.gnogno
  • profile_test.gnogno
render.gnogno
1package profile23import (4	"bytes"5	"net/url"67	"gno.land/p/nt/mux/v0"8	"gno.land/p/nt/ufmt/v0"9)1011const (12	BaseURL           = "/r/demo/profile"13	SetStringFieldURL = BaseURL + "$help&func=SetStringField&field=%s"14	SetIntFieldURL    = BaseURL + "$help&func=SetIntField&field=%s"15	SetBoolFieldURL   = BaseURL + "$help&func=SetBoolField&field=%s"16	ViewAllFieldsURL  = BaseURL + ":u/%s"17	ViewFieldURL      = BaseURL + ":f/%s/%s"18)1920func homeHandler(res *mux.ResponseWriter, req *mux.Request) {21	var b bytes.Buffer2223	b.WriteString("## Setters\n")24	for field := range stringFields {25		link := ufmt.Sprintf(SetStringFieldURL, field)26		b.WriteString(ufmt.Sprintf("- [Set %s](%s)\n", field, link))27	}2829	for field := range intFields {30		link := ufmt.Sprintf(SetIntFieldURL, field)31		b.WriteString(ufmt.Sprintf("- [Set %s](%s)\n", field, link))32	}3334	for field := range boolFields {35		link := ufmt.Sprintf(SetBoolFieldURL, field)36		b.WriteString(ufmt.Sprintf("- [Set %s Field](%s)\n", field, link))37	}3839	b.WriteString("\n---\n\n")4041	res.Write(b.String())42}4344func profileHandler(res *mux.ResponseWriter, req *mux.Request) {45	var b bytes.Buffer46	addr := req.GetVar("addr")4748	b.WriteString(ufmt.Sprintf("# Profile %s\n", addr))4950	address_XXX := address(addr)5152	for field := range stringFields {53		value := GetStringField(address_XXX, field, "n/a")54		link := ufmt.Sprintf(SetStringFieldURL, field)55		b.WriteString(ufmt.Sprintf("- %s: %s [Edit](%s)\n", field, value, link))56	}5758	for field := range intFields {59		value := GetIntField(address_XXX, field, 0)60		link := ufmt.Sprintf(SetIntFieldURL, field)61		b.WriteString(ufmt.Sprintf("- %s: %d [Edit](%s)\n", field, value, link))62	}6364	for field := range boolFields {65		value := GetBoolField(address_XXX, field, false)66		link := ufmt.Sprintf(SetBoolFieldURL, field)67		b.WriteString(ufmt.Sprintf("- %s: %t [Edit](%s)\n", field, value, link))68	}6970	res.Write(b.String())71}7273func fieldHandler(res *mux.ResponseWriter, req *mux.Request) {74	var b bytes.Buffer75	addr := req.GetVar("addr")76	field := req.GetVar("field")7778	b.WriteString(ufmt.Sprintf("# Field %s for %s\n", field, addr))7980	address_XXX := address(addr)81	value := "n/a"82	var editLink string8384	if _, ok := stringFields[field]; ok {85		value = ufmt.Sprintf("%s", GetStringField(address_XXX, field, "n/a"))86		editLink = ufmt.Sprintf(SetStringFieldURL+"&addr=%s&value=%s", field, addr, url.QueryEscape(value))87	} else if _, ok := intFields[field]; ok {88		value = ufmt.Sprintf("%d", GetIntField(address_XXX, field, 0))89		editLink = ufmt.Sprintf(SetIntFieldURL+"&addr=%s&value=%s", field, addr, value)90	} else if _, ok := boolFields[field]; ok {91		value = ufmt.Sprintf("%t", GetBoolField(address_XXX, field, false))92		editLink = ufmt.Sprintf(SetBoolFieldURL+"&addr=%s&value=%s", field, addr, value)93	}9495	b.WriteString(ufmt.Sprintf("- %s: %s [Edit](%s)\n", field, value, editLink))9697	res.Write(b.String())98}99100func Render(path string) string {101	return router.Render(path)102}103

Functions

  • GetBoolField(addr string, field string, def bool) bool

  • GetIntField(addr string, field string, def int) int

  • GetStringField(addr string, field string, def string) string

  • Render(path string) string

  • SetBoolField(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, field string, value bool) bool

  • SetIntField(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, field string, value int) bool

  • SetStringField(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, field string, value string) bool

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗

vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.