From b97128e5f7301540081a9ab6a873f59defb530f7 Mon Sep 17 00:00:00 2001 From: manerakai Date: Thu, 31 Aug 2023 04:58:02 +0000 Subject: [PATCH] Implemented Cookies git-svn-id: file:///srv/svn/repo/mai/trunk@18 e410bdd4-646f-c54f-a7ce-fffcc4f439ae --- web/main.go | 142 ++++++++++++++++++++++++------------------- web/static/style.css | 1 + web/views/index.html | 4 +- 3 files changed, 81 insertions(+), 66 deletions(-) diff --git a/web/main.go b/web/main.go index b126eb3..c0fac67 100644 --- a/web/main.go +++ b/web/main.go @@ -4,6 +4,7 @@ import ( "bytes" "net/http" "net/url" + "time" "codeberg.org/SimpleWeb/SimplyTranslate/engines" "github.com/gofiber/fiber/v2" @@ -16,6 +17,81 @@ func main() { Views: engine, }) + app.All("/", func(c *fiber.Ctx) error { + engine := c.Query("engine") + if _, ok := engines.Engines[engine]; !ok || engine == "" { + engine = "google" + } + targetLanguages, err := engines.Engines[engine].TargetLanguages() + if err != nil { + return c.SendStatus(500) + } + sourceLanguages, err := engines.Engines[engine].SourceLanguages() + if err != nil { + return c.SendStatus(500) + } + originalText := "" + translatedText := "" + from := "" + to := "" + ttsFrom := "" + ttsTo := "" + + if c.Method() == "POST" { + from = c.FormValue("from") + to = c.FormValue("to") + originalText = c.FormValue("text") + if result, err := engines.Engines[engine].Translate(originalText, from, to); err != nil { + return c.SendStatus(500) + } else { + translatedText = result.TranslatedText + } + + ttsFromURL, _ := url.Parse("api/tts") + fromQuery := url.Values{} + fromQuery.Add("lang", from) + fromQuery.Add("text", originalText) + ttsFromURL.RawQuery = fromQuery.Encode() + ttsFrom = ttsFromURL.String() + + ttsToURL, _ := url.Parse("api/tts") + toQuery := url.Values{} + toQuery.Add("lang", to) + toQuery.Add("text", translatedText) + ttsToURL.RawQuery = toQuery.Encode() + ttsTo = ttsToURL.String() + + fromCookie := new(fiber.Cookie) + fromCookie.Name = "from" + fromCookie.Value = from + fromCookie.Expires = time.Now().Add(24 * time.Hour * 365) + c.Cookie(fromCookie) + + toCookie := new(fiber.Cookie) + toCookie.Name = "to" + toCookie.Value = to + toCookie.Expires = time.Now().Add(24 * time.Hour * 365) + c.Cookie(toCookie) + + } else if c.Method() == "GET" { + from = c.Cookies("from") + to = c.Cookies("to") + } else { + return c.SendStatus(400) + } + return c.Render("index", fiber.Map{ + "Engine": engine, + "SourceLanguages": targetLanguages, + "TargetLanguages": sourceLanguages, + "OriginalText": originalText, + "TranslatedText": translatedText, + "From": from, + "To": to, + "TtsFrom": ttsFrom, + "TtsTo": ttsTo, + }) + }) + app.All("/api/translate", func(c *fiber.Ctx) error { from := "" to := "" @@ -71,69 +147,6 @@ func main() { } }) - app.All("/", func(c *fiber.Ctx) error { - engine := c.Query("engine") - if _, ok := engines.Engines[engine]; !ok || engine == "" { - engine = "google" - } - targetLanguages, err := engines.Engines[engine].TargetLanguages() - if err != nil { - return c.SendStatus(500) - } - sourceLanguages, err := engines.Engines[engine].SourceLanguages() - if err != nil { - return c.SendStatus(500) - } - originalText := "" - translatedText := "" - from := "" - to := "" - ttsFrom := "" - ttsTo := "" - - if c.Method() == "POST" { - from = - c.FormValue("from") - to = c.FormValue("to") - originalText = c.FormValue("text") - if result, err := engines.Engines[engine].Translate(originalText, from, to); err != nil { - return c.SendStatus(500) - } else { - translatedText = result.TranslatedText - } - - ttsFromURL, _ := url.Parse("api/tts") - - fromQuery := url.Values{} - fromQuery.Add("lang", from) - fromQuery.Add("text", originalText) - ttsFromURL.RawQuery = fromQuery.Encode() - ttsFrom = ttsFromURL.String() - - ttsToURL, _ := url.Parse("api/tts") - - toQuery := url.Values{} - toQuery.Add("lang", to) - toQuery.Add("text", translatedText) - ttsToURL.RawQuery = toQuery.Encode() - ttsTo = ttsToURL.String() - - } - return c.Render("index", fiber.Map{ - "Engine": engine, - "SourceLanguages": targetLanguages, - "TargetLanguages": sourceLanguages, - "OriginalText": originalText, - "TranslatedText": translatedText, - "From": from, - "To": to, - "TtsFrom": ttsFrom, - "TtsTo": ttsTo, - }) - }) - - app.Static("/static", "./static") - app.Get("/api/tts", func(c *fiber.Ctx) error { engine := c.Query("engine") if _, ok := engines.Engines[engine]; !ok || engine == "" { @@ -163,7 +176,10 @@ func main() { return c.Send(buf.Bytes()) } } + }) + app.Static("/static", "./static") + app.Listen(":3000") } diff --git a/web/static/style.css b/web/static/style.css index 6fc7750..758dd2e 100644 --- a/web/static/style.css +++ b/web/static/style.css @@ -28,6 +28,7 @@ justify-content: center; width: 450px; margin: 5px 10px; + gap: 10px; } diff --git a/web/views/index.html b/web/views/index.html index 5d9b164..7fef29d 100644 --- a/web/views/index.html +++ b/web/views/index.html @@ -17,9 +17,7 @@

SimplyTranslate

-
- - +