gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taldir] branch master updated: better document type and localizat


From: gnunet
Subject: [taler-taldir] branch master updated: better document type and localization handling
Date: Thu, 07 Jul 2022 16:10:43 +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 7c497df  better document type and localization handling
7c497df is described below

commit 7c497df7ada7d68cc2891e11ee5ba6d4a16215db
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Thu Jul 7 16:10:39 2022 +0200

    better document type and localization handling
---
 cmd/taldir-server/taldir.go | 80 +++++++++++++++++++++++++++++++++------------
 taldir.conf                 |  4 +++
 2 files changed, 64 insertions(+), 20 deletions(-)

diff --git a/cmd/taldir-server/taldir.go b/cmd/taldir-server/taldir.go
index 160813a..c24a141 100644
--- a/cmd/taldir-server/taldir.go
+++ b/cmd/taldir-server/taldir.go
@@ -470,41 +470,85 @@ func (t *Taldir) ClearDatabase() {
 }
 
 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)
+  fileType := 
t.Cfg.Section("taldir").Key("default_doc_filetype").MustString("text/markdown")
+  termsLocation := 
t.Cfg.Section("taldir").Key("default_tos_path").MustString("terms/")
+  for _, typ := range r.Header["Accept"] {
+    for _, a := range 
strings.Split(t.Cfg.Section("taldir").Key("supported_doc_filetypes").String(), 
" ") {
+      if typ == a {
+        fileType = a
+      }
+    }
+  }
+
+  if len(r.Header.Get("Accept-Language")) != 0 {
+    acceptLangs, _, _ := 
language.ParseAcceptLanguage(r.Header.Get("Accept-Language"))
+    for _, lang := range acceptLangs {
+      extensions, _ := mime.ExtensionsByType(fileType)
       for _, ext := range extensions {
-        log.Printf("Trying %s\n", "terms/" + lang.String() + ext)
-        fileBytes, err := ioutil.ReadFile("terms/" + lang.String() + ext)
+        log.Printf("Trying %s\n", termsLocation + lang.String() + ext)
+        fileBytes, err := ioutil.ReadFile(termsLocation + lang.String() + ext)
         if nil == err {
-          w.Header().Set("Content-Type", typ)
+          w.Header().Set("Content-Type", fileType)
           w.Write(fileBytes)
           return
         }
       }
     }
+    w.WriteHeader(404)
+    return
+  }
+  // Default document in expected/default format
+  defaultLanguage := 
t.Cfg.Section("taldir").Key("default_doc_lang").MustString("en-US")
+  extensions, _ := mime.ExtensionsByType(fileType)
+  for _, ext := range extensions {
+    fileBytes, err := ioutil.ReadFile(termsLocation + defaultLanguage + ext)
+    if nil == err {
+      w.Header().Set("Content-Type", fileType)
+      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)
+  fileType := 
t.Cfg.Section("taldir").Key("default_doc_filetype").MustString("text/markdown")
+  termsLocation := 
t.Cfg.Section("taldir").Key("default_pp_path").MustString("privacy/")
+  for _, typ := range r.Header["Accept"] {
+    for _, a := range 
strings.Split(t.Cfg.Section("taldir").Key("supported_doc_filetypes").String(), 
" ") {
+      if typ == a {
+        fileType = a
+      }
+    }
+  }
+
+  if len(r.Header.Get("Accept-Language")) != 0 {
+    acceptLangs, _, _ := 
language.ParseAcceptLanguage(r.Header.Get("Accept-Language"))
+    for _, lang := range acceptLangs {
+      extensions, _ := mime.ExtensionsByType(fileType)
       for _, ext := range extensions {
-        log.Printf("Trying %s\n", "privacy/" + lang.String() + ext)
-        fileBytes, err := ioutil.ReadFile("privacy/" + lang.String() + ext)
+        log.Printf("Trying %s\n", termsLocation + lang.String() + ext)
+        fileBytes, err := ioutil.ReadFile(termsLocation + lang.String() + ext)
         if nil == err {
-          w.Header().Set("Content-Type", typ)
+          w.Header().Set("Content-Type", fileType)
           w.Write(fileBytes)
           return
         }
       }
     }
+    w.WriteHeader(404)
+    return
+  }
+  // Default document in expected/default format
+  defaultLanguage := 
t.Cfg.Section("taldir").Key("default_doc_lang").MustString("en-US")
+  extensions, _ := mime.ExtensionsByType(fileType)
+  for _, ext := range extensions {
+    fileBytes, err := ioutil.ReadFile(termsLocation + defaultLanguage + ext)
+    if nil == err {
+      w.Header().Set("Content-Type", fileType)
+      w.Write(fileBytes)
+      return
+    }
   }
   w.WriteHeader(404)
 }
@@ -544,10 +588,6 @@ func (t *Taldir) Initialize(cfgfile string, clearDb bool) {
     fmt.Println("Production mode enabled")
   }
 
-  t.Validators = make(map[string]bool)
-  for _, a := range 
strings.Split(t.Cfg.Section("taldir").Key("validators").String(), " ") {
-    t.Validators[a] = true
-  }
   t.Validators = make(map[string]bool)
   for _, a := range 
strings.Split(t.Cfg.Section("taldir").Key("validators").String(), " ") {
     t.Validators[a] = true
diff --git a/taldir.conf b/taldir.conf
index a24771d..e3fe00c 100644
--- a/taldir.conf
+++ b/taldir.conf
@@ -6,6 +6,10 @@ bind_to = "localhost:11000"
 salt = "ChangeMe"
 monthly_fee = KUDOS:1
 request_frequency = 3
+default_doc_filetype = text/markdown
+default_doc_lang = en-US
+default_tos_path = terms/
+default_pp_path = privacy/
 
 [taldir-email]
 sender = "taldir@taler.net"

-- 
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]