Changeset 18 in code for trunk


Ignore:
Timestamp:
Aug 31, 2023, 4:58:02 AM (22 months ago)
Author:
manerakai
Message:

Implemented Cookies

Location:
trunk/web
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/main.go

    r17 r18  
    55        "net/http"
    66        "net/url"
     7        "time"
    78
    89        "codeberg.org/SimpleWeb/SimplyTranslate/engines"
     
    1516        app := fiber.New(fiber.Config{
    1617                Views: engine,
     18        })
     19
     20        app.All("/", func(c *fiber.Ctx) error {
     21                engine := c.Query("engine")
     22                if _, ok := engines.Engines[engine]; !ok || engine == "" {
     23                        engine = "google"
     24                }
     25                targetLanguages, err := engines.Engines[engine].TargetLanguages()
     26                if err != nil {
     27                        return c.SendStatus(500)
     28                }
     29                sourceLanguages, err := engines.Engines[engine].SourceLanguages()
     30                if err != nil {
     31                        return c.SendStatus(500)
     32                }
     33                originalText := ""
     34                translatedText := ""
     35                from := ""
     36                to := ""
     37                ttsFrom := ""
     38                ttsTo := ""
     39
     40                if c.Method() == "POST" {
     41                        from = c.FormValue("from")
     42                        to = c.FormValue("to")
     43                        originalText = c.FormValue("text")
     44                        if result, err := engines.Engines[engine].Translate(originalText, from, to); err != nil {
     45                                return c.SendStatus(500)
     46                        } else {
     47                                translatedText = result.TranslatedText
     48                        }
     49
     50                        ttsFromURL, _ := url.Parse("api/tts")
     51                        fromQuery := url.Values{}
     52                        fromQuery.Add("lang", from)
     53                        fromQuery.Add("text", originalText)
     54                        ttsFromURL.RawQuery = fromQuery.Encode()
     55                        ttsFrom = ttsFromURL.String()
     56
     57                        ttsToURL, _ := url.Parse("api/tts")
     58                        toQuery := url.Values{}
     59                        toQuery.Add("lang", to)
     60                        toQuery.Add("text", translatedText)
     61                        ttsToURL.RawQuery = toQuery.Encode()
     62                        ttsTo = ttsToURL.String()
     63
     64                        fromCookie := new(fiber.Cookie)
     65                        fromCookie.Name = "from"
     66                        fromCookie.Value = from
     67                        fromCookie.Expires = time.Now().Add(24 * time.Hour * 365)
     68                        c.Cookie(fromCookie)
     69
     70                        toCookie := new(fiber.Cookie)
     71                        toCookie.Name = "to"
     72                        toCookie.Value = to
     73                        toCookie.Expires = time.Now().Add(24 * time.Hour * 365)
     74                        c.Cookie(toCookie)
     75
     76                } else if c.Method() == "GET" {
     77                        from = c.Cookies("from")
     78                        to = c.Cookies("to")
     79                } else {
     80                        return c.SendStatus(400)
     81                }
     82                return c.Render("index", fiber.Map{
     83                        "Engine":          engine,
     84                        "SourceLanguages": targetLanguages,
     85                        "TargetLanguages": sourceLanguages,
     86                        "OriginalText":    originalText,
     87                        "TranslatedText":  translatedText,
     88                        "From":            from,
     89                        "To":              to,
     90                        "TtsFrom":         ttsFrom,
     91                        "TtsTo":           ttsTo,
     92                })
    1793        })
    1894
     
    72148        })
    73149
    74         app.All("/", func(c *fiber.Ctx) error {
    75                 engine := c.Query("engine")
    76                 if _, ok := engines.Engines[engine]; !ok || engine == "" {
    77                         engine = "google"
    78                 }
    79                 targetLanguages, err := engines.Engines[engine].TargetLanguages()
    80                 if err != nil {
    81                         return c.SendStatus(500)
    82                 }
    83                 sourceLanguages, err := engines.Engines[engine].SourceLanguages()
    84                 if err != nil {
    85                         return c.SendStatus(500)
    86                 }
    87                 originalText := ""
    88                 translatedText := ""
    89                 from := ""
    90                 to := ""
    91                 ttsFrom := ""
    92                 ttsTo := ""
    93 
    94                 if c.Method() == "POST" {
    95                         from =
    96                                 c.FormValue("from")
    97                         to = c.FormValue("to")
    98                         originalText = c.FormValue("text")
    99                         if result, err := engines.Engines[engine].Translate(originalText, from, to); err != nil {
    100                                 return c.SendStatus(500)
    101                         } else {
    102                                 translatedText = result.TranslatedText
    103                         }
    104 
    105                         ttsFromURL, _ := url.Parse("api/tts")
    106 
    107                         fromQuery := url.Values{}
    108                         fromQuery.Add("lang", from)
    109                         fromQuery.Add("text", originalText)
    110                         ttsFromURL.RawQuery = fromQuery.Encode()
    111                         ttsFrom = ttsFromURL.String()
    112 
    113                         ttsToURL, _ := url.Parse("api/tts")
    114 
    115                         toQuery := url.Values{}
    116                         toQuery.Add("lang", to)
    117                         toQuery.Add("text", translatedText)
    118                         ttsToURL.RawQuery = toQuery.Encode()
    119                         ttsTo = ttsToURL.String()
    120 
    121                 }
    122                 return c.Render("index", fiber.Map{
    123                         "Engine":          engine,
    124                         "SourceLanguages": targetLanguages,
    125                         "TargetLanguages": sourceLanguages,
    126                         "OriginalText":    originalText,
    127                         "TranslatedText":  translatedText,
    128                         "From":            from,
    129                         "To":              to,
    130                         "TtsFrom":         ttsFrom,
    131                         "TtsTo":           ttsTo,
    132                 })
    133         })
    134 
    135         app.Static("/static", "./static")
    136 
    137150        app.Get("/api/tts", func(c *fiber.Ctx) error {
    138151                engine := c.Query("engine")
     
    164177                        }
    165178                }
     179
    166180        })
     181
     182        app.Static("/static", "./static")
    167183
    168184        app.Listen(":3000")
  • trunk/web/static/style.css

    r16 r18  
    2929    width: 450px;
    3030    margin: 5px 10px;
     31    gap: 10px;
    3132}
    3233
  • trunk/web/views/index.html

    r17 r18  
    1818    </header>
    1919
    20     <form method="POST" id="translation-form">
    21 
    22         <input type="hidden" name="engine" value="{{.Engine}}">
     20    <form action="/?engine={{.Engine}}" method="POST" id="translation-form">
    2321
    2422        <div class="wrap languages">
Note: See TracChangeset for help on using the changeset viewer.