summaryrefslogtreecommitdiff
path: root/internal
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/router/basic-handler.go10
-rw-r--r--internal/router/handlers/lang-blog-title.go30
-rw-r--r--internal/router/handlers/lang-blog.go9
-rw-r--r--internal/router/handlers/lang-user.go11
-rw-r--r--internal/router/handlers/lang.go12
-rw-r--r--internal/router/handlers/root.go13
-rw-r--r--internal/router/router.go36
7 files changed, 25 insertions, 96 deletions
diff --git a/internal/router/basic-handler.go b/internal/router/basic-handler.go
index b973d01..98a7d84 100644
--- a/internal/router/basic-handler.go
+++ b/internal/router/basic-handler.go
@@ -49,12 +49,10 @@ func (r *BasicHandler) Render(c *fiber.Ctx, supplements *Supplements, lang strin
return fiber.StatusNoContent, nil
}
-func (r *BasicHandler) AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta []MetaField, err error) {
- return []MetaField{{Name: "robots", Content: "noindex,nofollow"}}, nil
-}
-
-func (r *BasicHandler) AddLinkedData(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) {
- return nil, nil
+func (r *BasicHandler) AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
+ return map[string]string{
+ "robots": "noindex,nofollow",
+ }, nil
}
func (r *BasicHandler) RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go
index 5bfc6e7..9eac084 100644
--- a/internal/router/handlers/lang-blog-title.go
+++ b/internal/router/handlers/lang-blog-title.go
@@ -65,35 +65,17 @@ func (r *BlogPageHandler) SitemapInfo(supplements *router.Supplements) []router.
return sitemapInfo
}
-func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
+func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md")
if err != nil {
return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err)
}
- return []router.MetaField{
- {Property: "og:title", Content: metadata.Title},
- {Property: "og:description", Content: fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate)},
- {Property: "og:image", Content: fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", metadata.Thumbnail)},
- {Property: "og:url", Content: fmt.Sprintf("%s/%s/blog/%s", templateMap["CanonicalEndpoint"], lang, c.Params("title"))},
- {Property: "og:type", Content: "website"},
- {Name: "twitter:card", Content: "summary_large_image"},
- }, nil
-}
-
-func (r *BlogPageHandler) AddLinkedData(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) {
- metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md")
- if err != nil {
- return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err)
- }
-
- return map[string]any{
- "@context": "https://schema.org",
- "@type": "Article",
- "headline": metadata.Title,
- "description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate),
- "author": map[string]string{"@type": "Person", "name": "Saya Andy"},
- "datePublished": metadata.PublishedTime.UTC().Format(time.RFC3339),
+ return map[string]string{
+ "og:title": metadata.Title,
+ "og:description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate),
+ "og:image": fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", metadata.Thumbnail),
+ "twitter:card": "summary_large_image",
}, nil
}
diff --git a/internal/router/handlers/lang-blog.go b/internal/router/handlers/lang-blog.go
index 709d3dc..ffac77e 100644
--- a/internal/router/handlers/lang-blog.go
+++ b/internal/router/handlers/lang-blog.go
@@ -55,15 +55,6 @@ func (r *CatalogueHandler) SitemapInfo(supplements *router.Supplements) []router
return sitemapInfo
}
-func (r *CatalogueHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
- return []router.MetaField{
- {Property: "og:title", Content: supplements.Localization[lang].BlogSearch.Header},
- {Property: "og:description", Content: supplements.Localization[lang].BlogSearch.Description},
- {Property: "og:url", Content: fmt.Sprintf("%s/%s/blog", templateMap["CanonicalEndpoint"], lang)},
- {Property: "og:type", Content: "website"},
- }, nil
-}
-
func (r *CatalogueHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
querySort := c.Query("sort")
if querySort == "" {
diff --git a/internal/router/handlers/lang-user.go b/internal/router/handlers/lang-user.go
index eae1685..c22bcac 100644
--- a/internal/router/handlers/lang-user.go
+++ b/internal/router/handlers/lang-user.go
@@ -37,13 +37,10 @@ func (r *UserHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *UserHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
- return []router.MetaField{
- {Name: "robots", Content: "noindex,nofollow"},
- {Property: "og:title", Content: supplements.Localization[lang].UserProfile.Header},
- {Property: "og:description", Content: supplements.Localization[lang].UserProfile.Description},
- {Property: "og:url", Content: fmt.Sprintf("%s/%s/user", templateMap["CanonicalEndpoint"], lang)},
- {Property: "og:type", Content: "website"},
+func (r *UserHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
+ return map[string]string{
+ "og:title": supplements.Localization[lang].BlogSearch.Header,
+ "og:description": supplements.Localization[lang].BlogSearch.Description,
}, nil
}
diff --git a/internal/router/handlers/lang.go b/internal/router/handlers/lang.go
index c618353..5430773 100644
--- a/internal/router/handlers/lang.go
+++ b/internal/router/handlers/lang.go
@@ -49,13 +49,11 @@ func (r *HomeHandler) SitemapInfo(supplements *router.Supplements) []router.Site
return sitemapInfo
}
-func (r *HomeHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
- return []router.MetaField{
- {Property: "og:title", Content: supplements.Localization[lang].HomePage.Header},
- {Property: "og:description", Content: supplements.Localization[lang].HomePage.HomePageDescription},
- {Property: "og:image", Content: fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/otter-%d.gif", rand.Int()%3+1)},
- {Property: "og:url", Content: fmt.Sprintf("%s/%s", templateMap["CanonicalEndpoint"], lang)},
- {Property: "og:type", Content: "website"},
+func (r *HomeHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
+ return map[string]string{
+ "og:title": supplements.Localization[lang].HomePage.Header,
+ "og:description": supplements.Localization[lang].HomePage.HomePageDescription,
+ "og:image": "https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/" + fmt.Sprintf("otter-%d.gif", rand.Int()%3+1),
}, nil
}
diff --git a/internal/router/handlers/root.go b/internal/router/handlers/root.go
index cd01fcd..89b9c63 100644
--- a/internal/router/handlers/root.go
+++ b/internal/router/handlers/root.go
@@ -1,7 +1,6 @@
package handlers
import (
- "fmt"
"time"
"github.com/SayaAndy/saya-today-web/internal/router"
@@ -37,15 +36,13 @@ func (r *RootHandler) CacheDuration() time.Duration {
}
func (r *RootHandler) SitemapInfo(_ *router.Supplements) []router.SitemapInfo {
- return []router.SitemapInfo{{Loc: "/", Priority: 0.7}}
+ return []router.SitemapInfo{{Loc: "", Priority: 0.7}}
}
-func (r *RootHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
- return []router.MetaField{
- {Property: "og:title", Content: "Saya Blog"},
- {Property: "og:description", Content: "The blog of a 25 years old, travelling God knows where, proud to be not mainstream // Личный блог 25-летки, странствующего по ебеням, зато не мейнстрим"},
- {Property: "og:url", Content: fmt.Sprint(templateMap["CanonicalEndpoint"]) + "/"},
- {Property: "og:type", Content: "website"},
+func (r *RootHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
+ return map[string]string{
+ "og:title": "Saya Blog",
+ "og:description": "The blog of a 25 years old, travelling God knows where, proud to be not mainstream // Личный блог 25-летки, странствующего по ебеням, зато не мейнстрим",
}, nil
}
diff --git a/internal/router/router.go b/internal/router/router.go
index 0d0ce8c..56313ff 100644
--- a/internal/router/router.go
+++ b/internal/router/router.go
@@ -2,10 +2,8 @@ package router
import (
"database/sql"
- "encoding/json"
"errors"
"fmt"
- "html/template"
"log/slog"
"net/url"
"slices"
@@ -23,9 +21,7 @@ import (
"github.com/SayaAndy/saya-today-web/locale"
"github.com/dgraph-io/ristretto/v2"
"github.com/gofiber/fiber/v2"
- "github.com/gofiber/fiber/v2/middleware/compress"
"github.com/gofiber/fiber/v2/middleware/cors"
- "github.com/gofiber/fiber/v2/middleware/etag"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3"
"github.com/yuin/goldmark"
@@ -63,12 +59,6 @@ type SitemapInfo struct {
Priority float32
}
-type MetaField struct {
- Name string
- Property string
- Content string
-}
-
type Route interface {
Filter() (method string, path string)
IsTemplated() bool
@@ -79,8 +69,7 @@ type Route interface {
SitemapInfo(supplements *Supplements) []SitemapInfo
ContentType() string
Render(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
- AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta []MetaField, err error)
- AddLinkedData(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error)
+ AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error)
RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderBody(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderFooter(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
@@ -231,20 +220,6 @@ func NewRouter(cfg *config.Config) (*Router, error) {
AllowHeaders: "Origin, Content-Type, Accept",
}))
- app.Use(compress.New(compress.Config{
- Level: compress.LevelBestSpeed,
- }))
-
- app.Use(etag.New())
-
- app.Use(func(c *fiber.Ctx) error {
- path := c.Path()
- if len(path) > 1 && path[len(path)-1] == '/' {
- return c.Redirect(strings.TrimRight(path, "/"), fiber.StatusMovedPermanently)
- }
- return c.Next()
- })
-
templatedRoutes := make(map[string]map[string]Route)
templatedPathMatcher := NewPathMatcher()
@@ -431,15 +406,6 @@ func (r *Router) generalPage(c *fiber.Ctx, route Route, lang string) error {
slog.Warn("failed to receive meta", slog.String("path", path), slog.String("error", err.Error()))
}
- var ld map[string]any
- if ld, err = route.AddLinkedData(c, r.supplements, lang, valueMap); err != nil {
- slog.Warn("failed to receive linked data", slog.String("path", path), slog.String("error", err.Error()))
- }
- if ld != nil {
- ldBytes, _ := json.Marshal(ld)
- valueMap["LinkedData"] = template.JS(ldBytes)
- }
-
content, err := r.supplements.TemplateManager.Render("general-page", valueMap)
if err != nil {
slog.Warn("failed to generate div", slog.String("path", path), slog.String("error", err.Error()))