[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-taldir] branch master updated: add localized terms handling,
gnunet <=