commit 86720503ed335c39b4d5a87d2189e1ebbaf5acb4
parent dfa72ebc7df107045f5a5ac0e0aa7ba5f4f3c1fa
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sat, 9 Dec 2023 15:09:50 +0100
Fix error handling
Diffstat:
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/pkg/rest/gnsregistrar.go b/pkg/rest/gnsregistrar.go
@@ -149,13 +149,13 @@ func (t *Registrar) configResponse(w http.ResponseWriter, r *http.Request) {
// FIXME: Implement https://docs.taler.net/design-documents/051-fractional-digits.html and move to taler-go
func (t *Registrar) localizedAmountString() (string) {
- p := message.NewPrinter(language.English)
+ p := message.NewPrinter(language.English)
costStr := t.RegistrationCost.String()
costSplit := strings.Split(costStr, ":")
left := costSplit[0]
right := costSplit[1]
cur, err := currency.ParseISO(left)
- if nil != err {
+ if nil != err {
return fmt.Sprintf("%s %s", right, left)
}
amf, _ := strconv.ParseFloat(right, 8)
@@ -169,6 +169,7 @@ func (t *Registrar) landingPage(w http.ResponseWriter, r *http.Request) {
fullData := map[string]interface{}{
"suffixHint": t.SuffixHint,
"zoneKey": t.RootZoneKey,
+ "error": r.URL.Query().Get("error"),
}
t.LandingTpl.Execute(w, fullData)
return
@@ -471,20 +472,23 @@ func (t *Registrar) namePage(w http.ResponseWriter, r *http.Request) {
respData, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Failed to get zone contents: " + err.Error())
+ http.Redirect(w, r, "/" + "?error=Failed to get zone contents.", http.StatusSeeOther)
return
}
err = json.NewDecoder(bytes.NewReader(respData)).Decode(&namestoreResponse)
if err != nil {
fmt.Println("Failed to get zone contents: " + err.Error())
+ http.Redirect(w, r, "/" + "?error=Failed to get zone contents.", http.StatusSeeOther)
return
}
regMetadata, err = t.getCurrentRegistrationMetadata(vars["label"], &namestoreResponse)
if err != nil {
fmt.Println("Failed to get registration metadata: " + err.Error())
+ http.Redirect(w, r, "/" + "?error=Failed to get registration metadata.", http.StatusSeeOther)
return
}
} else if http.StatusNotFound != resp.StatusCode {
- http.Redirect(w, r, "/name/" + vars["label"] + "?error=Error retrieving zone information.", http.StatusSeeOther)
+ http.Redirect(w, r, "/" + "?error=Error retrieving zone information.", http.StatusSeeOther)
return
}
for _, record := range namestoreResponse.Records {
diff --git a/web/templates/landing.html b/web/templates/landing.html
@@ -12,6 +12,15 @@
<h1 class="text-center mb-5">GNUnet GNS Registrar<br/>
<span class="text-center fs-5 text-secondary">Zone: {{.zoneKey}}</span>
</h1>
+ {{if .error}}
+ <div class="container pt-5">
+ <div class="alert alert-danger" role="alert">
+ <h4 class="alert-heading">Oh no!</h4>
+ <hr>
+ <p class="mb-0">{{.error}}.</p>
+ </div>
+ </div>
+ {{end}}
<form action="/search" method="get" class="row">
<div class="row">
<div class="col-lg-6 offset-lg-3">