123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package config
- import (
- "html/template"
- "log"
- "strconv"
- "time"
- "github.com/dmitriygnatenko/internal/interfaces"
- "github.com/gofiber/fiber/v2"
- "github.com/gofiber/template/html"
- )
- const (
- appName = "dmitriygnatenko"
- templatesPath = "./../../internal/templates"
- )
- func Init(app interfaces.IApp) fiber.Config {
- return fiber.Config{
- AppName: appName,
- DisableStartupMessage: true,
- Views: initEngine(app.GetEnvService()),
- ErrorHandler: initErrorHandler(app),
- }
- }
- //nolint
- func initEngine(env interfaces.IEnv) *html.Engine {
- engine := html.New(templatesPath, ".html")
- engine.AddFunc("now", func() time.Time {
- return time.Now()
- })
- engine.AddFunc("noescape", func(str string) template.HTML {
- return template.HTML(str)
- })
- engine.AddFunc("gridsep", func(i, l int) bool {
- i++
- return i%3 == 0 && i != l
- })
- engine.AddFunc("version", func() string {
- return env.GetStaticVersion()
- })
- engine.AddFunc("ga", func() bool {
- return env.IsGAEnabled()
- })
- return engine
- }
- func initErrorHandler(app interfaces.IApp) fiber.ErrorHandler {
- return func(ctx *fiber.Ctx, err error) error {
- errCode := fiber.StatusInternalServerError
- errText := err.Error()
- if e, ok := err.(*fiber.Error); ok {
- errCode = e.Code
- }
- var renderData fiber.Map
- if errCode == fiber.StatusNotFound {
- renderData = fiber.Map{
- "pageTitle": "Страница не найдена",
- "code": fiber.StatusNotFound,
- "text": "Запрашиваемая вами страница не найдена",
- }
- } else {
- renderData = fiber.Map{
- "pageTitle": "Внутренняя ошибка",
- "code": fiber.StatusInternalServerError,
- "text": "Внутренняя ошибка сервера, идем исправлять...",
- }
- if errText != "" {
- sendErr := app.GetMailerService().Send(
- app.GetEnvService().GetAdminEmail(),
- "Ошибка на сайте dmitriygnatenko.ru",
- "Код: "+strconv.Itoa(errCode)+"\r\n"+"Текст: "+errText,
- )
- if sendErr != nil {
- log.Print(sendErr)
- }
- }
- }
- renderData["headTitle"] = "От слона к суслику - статьи про PHP, Go, алгоритмы"
- return ctx.Render("error", renderData, "_layout")
- }
- }
|