1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package fiber
- import (
- "errors"
- "git.dmitriygnatenko.ru/dima/go-common/logger"
- "github.com/gofiber/fiber/v2"
- "github.com/gofiber/template/html/v2"
- customErrors "git.dmitriygnatenko.ru/dima/dmitriygnatenko-v2/internal/helper/errors"
- "git.dmitriygnatenko.ru/dima/dmitriygnatenko-v2/internal/service/i18n"
- "git.dmitriygnatenko.ru/dima/dmitriygnatenko-v2/internal/template/functions"
- )
- func getViewsEngine(sp ServiceProvider) *html.Engine {
- engine := html.New(sp.ConfigService().AppTemplatesPath(), ".html")
- engine.AddFunc("now", functions.Now)
- engine.AddFunc("noescape", functions.NoEscape)
- engine.AddFunc("concat", functions.Concat)
- engine.AddFunc("gridsep", functions.GridSep)
- engine.AddFunc("version", functions.Version(sp))
- engine.AddFunc("trans", functions.Trans)
- engine.AddFunc("link", functions.Link)
- return engine
- }
- func getErrorHandler() fiber.ErrorHandler {
- return func(fctx *fiber.Ctx, err error) error {
- lang := i18n.LanguageFromContext(fctx)
- errCode := fiber.StatusInternalServerError
- var e *fiber.Error
- if errors.As(err, &e) {
- errCode = e.Code
- }
- renderData := fiber.Map{
- "lang": lang,
- "headTitle": i18n.T(lang, "head_title"),
- }
- if errCode == fiber.StatusNotFound {
- renderData["pageTitle"] = i18n.T(lang, "page_not_found_err_title")
- renderData["code"] = fiber.StatusNotFound
- renderData["text"] = i18n.T(lang, "page_not_found_err_desc")
- } else {
- renderData["pageTitle"] = i18n.T(lang, "internal_err_title")
- renderData["code"] = fiber.StatusInternalServerError
- renderData["text"] = i18n.T(lang, "internal_err_desc")
- }
- if err = fctx.Render("error", renderData, "_layout"); err != nil {
- logger.Error(fctx.Context(), customErrors.Wrap(err, "render error template").Error())
- }
- return nil
- }
- }
|