gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taldir] branch master updated: add localized terms handling


From: gnunet
Subject: [taler-taldir] branch master updated: add localized terms handling
Date: Thu, 07 Jul 2022 13:00:25 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository taldir.

The following commit(s) were added to refs/heads/master by this push:
     new d7f7ecc  add localized terms handling
d7f7ecc is described below

commit d7f7ecca370fc63572ac0a36bc15d336dd9f5bcd
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Thu Jul 7 13:00:23 2022 +0200

    add localized terms handling
---
 cmd/taldir-server/taldir.go | 55 +++++++++++++++++++++++++++++++++++++++++++--
 go.mod                      |  1 +
 terms/de-DE.md              |  1 +
 3 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/cmd/taldir-server/taldir.go b/cmd/taldir-server/taldir.go
index 4bbccb4..0c17c6b 100644
--- a/cmd/taldir-server/taldir.go
+++ b/cmd/taldir-server/taldir.go
@@ -33,6 +33,8 @@ import (
   "time"
   "fmt"
   "log"
+  "io/ioutil"
+  "mime"
   "net/http"
   "html/template"
   "encoding/json"
@@ -46,6 +48,7 @@ import (
   "gopkg.in/ini.v1"
   "strings"
   "github.com/skip2/go-qrcode"
+  "golang.org/x/text/language"
 )
 
 type Taldir struct {
@@ -222,6 +225,13 @@ type ValidationConfirmation struct {
   Solution string `json:"solution"`
 }
 
+// matcher is a language.Matcher configured for all supported languages.
+var langMatcher = language.NewMatcher([]language.Tag{
+  language.BritishEnglish,
+  //language.Norwegian,
+  language.German,
+})
+
 // Primary lookup function.
 // Allows the caller to query a wallet key using the hash(!) of the
 // identity, e.g. SHA512(<email address>)
@@ -457,12 +467,53 @@ func (t *Taldir) ClearDatabase() {
   t.Db.Where("1 = 1").Delete(&Validation{})
 }
 
+func (t *Taldir) termsResponse(w http.ResponseWriter, r *http.Request) {
+  acceptLangs, _, _ := 
language.ParseAcceptLanguage(r.Header.Get("Accept-Language"))
+  // We ignore the error: the default language will be selected for t == nil.
+  for _, lang := range acceptLangs {
+    for _, typ := range r.Header["Accept"] {
+      extensions, _ := mime.ExtensionsByType(typ)
+      for _, ext := range extensions {
+        log.Printf("Trying %s\n", "terms/" + lang.String() + ext)
+        fileBytes, err := ioutil.ReadFile("terms/" + lang.String() + ext)
+        if nil == err {
+          w.Header().Set("Content-Type", typ)
+          w.Write(fileBytes)
+          return
+        }
+      }
+    }
+  }
+  w.WriteHeader(404)
+}
+
+func (t *Taldir) privacyResponse(w http.ResponseWriter, r *http.Request) {
+  acceptLangs, _, _ := 
language.ParseAcceptLanguage(r.Header.Get("Accept-Language"))
+  // We ignore the error: the default language will be selected for t == nil.
+  for _, lang := range acceptLangs {
+    for _, typ := range r.Header["Accept"] {
+      extensions, _ := mime.ExtensionsByType(typ)
+      for _, ext := range extensions {
+        log.Printf("Trying %s\n", "privacy/" + lang.String() + ext)
+        fileBytes, err := ioutil.ReadFile("privacy/" + lang.String() + ext)
+        if nil == err {
+          w.Header().Set("Content-Type", typ)
+          w.Write(fileBytes)
+          return
+        }
+      }
+    }
+  }
+  w.WriteHeader(404)
+}
+
+
 func (t *Taldir) setupHandlers() {
   t.Router = mux.NewRouter().StrictSlash(true)
 
   /* ToS API */
-  t.Router.HandleFunc("/terms", notImplemented).Methods("GET")
-  t.Router.HandleFunc("/privacy", notImplemented).Methods("GET")
+  t.Router.HandleFunc("/terms", t.termsResponse).Methods("GET")
+  t.Router.HandleFunc("/privacy", t.privacyResponse).Methods("GET")
 
   /* Config API */
   t.Router.HandleFunc("/config", t.configResponse).Methods("GET")
diff --git a/go.mod b/go.mod
index 7d1e166..205e81d 100644
--- a/go.mod
+++ b/go.mod
@@ -9,6 +9,7 @@ require (
        github.com/jinzhu/now v1.1.5 // indirect
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
        golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
+       golang.org/x/text v0.3.7 // indirect
        gopkg.in/ini.v1 v1.66.4
        gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect
        gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect
diff --git a/terms/de-DE.md b/terms/de-DE.md
new file mode 100644
index 0000000..16feec6
--- /dev/null
+++ b/terms/de-DE.md
@@ -0,0 +1 @@
+# TOS

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]