summaryrefslogtreecommitdiff
path: root/internal/router/handlers
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal/router/handlers')
-rw-r--r--internal/router/handlers/lang-blog-title.go51
-rw-r--r--internal/router/handlers/lang-blog.go17
-rw-r--r--internal/router/handlers/lang-map.go16
-rw-r--r--internal/router/handlers/lang-user.go10
-rw-r--r--internal/router/handlers/lang.go18
-rw-r--r--internal/router/handlers/robots.txt.go48
-rw-r--r--internal/router/handlers/root.go14
-rw-r--r--internal/router/handlers/sitemap.xml.go79
8 files changed, 1 insertions, 252 deletions
diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go
index 5bfc6e7..0f4f564 100644
--- a/internal/router/handlers/lang-blog-title.go
+++ b/internal/router/handlers/lang-blog-title.go
@@ -46,57 +46,6 @@ func (r *BlogPageHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *BlogPageHandler) SitemapInfo(supplements *router.Supplements) []router.SitemapInfo {
- sitemapInfo := []router.SitemapInfo{}
-
- pages, err := supplements.B2Client.Scan("")
- if err != nil {
- return sitemapInfo
- }
-
- for _, page := range pages {
- sitemapInfo = append(sitemapInfo, router.SitemapInfo{
- Loc: "/" + page.Lang + "/blog/" + page.FileName,
- LastModified: page.ModifiedTime,
- Priority: 1.0,
- })
- }
-
- return sitemapInfo
-}
-
-func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, 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),
- }, nil
-}
-
func (r *BlogPageHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
_, pathParts, _, err := router.GetPathFromReferer(c)
if err != nil {
diff --git a/internal/router/handlers/lang-blog.go b/internal/router/handlers/lang-blog.go
index 709d3dc..e4c20c6 100644
--- a/internal/router/handlers/lang-blog.go
+++ b/internal/router/handlers/lang-blog.go
@@ -47,23 +47,6 @@ func (r *CatalogueHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *CatalogueHandler) SitemapInfo(supplements *router.Supplements) []router.SitemapInfo {
- sitemapInfo := []router.SitemapInfo{}
- for _, lang := range supplements.AvailableLanguages {
- sitemapInfo = append(sitemapInfo, router.SitemapInfo{Loc: "/" + lang.Name + "/blog", Priority: 0.3})
- }
- 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-map.go b/internal/router/handlers/lang-map.go
index 551b485..dbf1437 100644
--- a/internal/router/handlers/lang-map.go
+++ b/internal/router/handlers/lang-map.go
@@ -3,7 +3,6 @@ package handlers
import (
"fmt"
"log/slog"
- "slices"
"strconv"
"strings"
@@ -40,19 +39,8 @@ func (r *MapHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *MapHandler) SitemapInfo(supplements *router.Supplements) []router.SitemapInfo {
- sitemapInfo := []router.SitemapInfo{}
- for _, lang := range supplements.AvailableLanguages {
- sitemapInfo = append(sitemapInfo, router.SitemapInfo{Loc: "/" + lang.Name + "/map", Priority: 0.3})
- }
- return sitemapInfo
-}
-
func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
pages, err := supplements.B2Client.Scan(lang + "/")
- slices.SortFunc(pages, func(a *b2.BlogPage, b *b2.BlogPage) int {
- return a.Metadata.PublishedTime.Compare(b.Metadata.PublishedTime)
- })
status := fiber.StatusOK
if err != nil {
slog.Error("received an error while scanning b2 pages",
@@ -64,7 +52,6 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
type MapMarker struct {
- Index int `json:"Index"`
Title string `json:"Title"`
PageLink string `json:"PageLink"`
Lat float64 `json:"Lat"`
@@ -74,7 +61,7 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
mapMarkers := make([]*MapMarker, 0, len(pages))
- for i, page := range pages {
+ for _, page := range pages {
geolocationParts := strings.Split(page.Metadata.Geolocation, " ")
if len(geolocationParts) < 2 {
continue
@@ -91,7 +78,6 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
mapMarkers = append(mapMarkers, &MapMarker{
- Index: i,
Title: page.Metadata.Title,
PageLink: fmt.Sprintf("/%s/blog/%s", lang, page.FileName),
Lat: x,
diff --git a/internal/router/handlers/lang-user.go b/internal/router/handlers/lang-user.go
index eae1685..db566fe 100644
--- a/internal/router/handlers/lang-user.go
+++ b/internal/router/handlers/lang-user.go
@@ -37,16 +37,6 @@ 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"},
- }, nil
-}
-
func (r *UserHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = supplements.Localization[lang].UserProfile.Header
diff --git a/internal/router/handlers/lang.go b/internal/router/handlers/lang.go
index c618353..fc4deb6 100644
--- a/internal/router/handlers/lang.go
+++ b/internal/router/handlers/lang.go
@@ -41,24 +41,6 @@ func (r *HomeHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *HomeHandler) SitemapInfo(supplements *router.Supplements) []router.SitemapInfo {
- sitemapInfo := []router.SitemapInfo{}
- for _, lang := range supplements.AvailableLanguages {
- sitemapInfo = append(sitemapInfo, router.SitemapInfo{Loc: "/" + lang.Name, Priority: 0.7})
- }
- 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"},
- }, nil
-}
-
func (r *HomeHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = supplements.Localization[lang].HomePage.Header
templateMap["FilledHeartCount"] = uint(40)
diff --git a/internal/router/handlers/robots.txt.go b/internal/router/handlers/robots.txt.go
deleted file mode 100644
index fc60af4..0000000
--- a/internal/router/handlers/robots.txt.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package handlers
-
-import (
- "time"
-
- "github.com/SayaAndy/saya-today-web/internal/router"
- "github.com/gofiber/fiber/v2"
-)
-
-type RobotsTxtHandler struct {
- router.BasicHandler
-}
-
-func init() {
- router.Routes = append(router.Routes, &RobotsTxtHandler{})
-}
-
-func (r *RobotsTxtHandler) Filter() (method string, path string) {
- return "GET", "/robots.txt"
-}
-
-func (r *RobotsTxtHandler) IsTemplated() bool {
- return false
-}
-
-func (r *RobotsTxtHandler) TemplatesToInject() []string {
- return []string{"views/pages/robots.txt"}
-}
-
-func (r *RobotsTxtHandler) ToCache() router.CacheSetting {
- return router.ByUrlOnly
-}
-
-func (r *RobotsTxtHandler) CacheDuration() time.Duration {
- return time.Hour
-}
-
-func (r *RobotsTxtHandler) ToValidateLang() router.LangSetting {
- return router.NotRequired
-}
-
-func (r *RobotsTxtHandler) ContentType() string {
- return fiber.MIMETextPlainCharsetUTF8
-}
-
-func (r *RobotsTxtHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
- return fiber.StatusOK, nil
-}
diff --git a/internal/router/handlers/root.go b/internal/router/handlers/root.go
index cd01fcd..c8c4cd4 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"
@@ -36,19 +35,6 @@ func (r *RootHandler) CacheDuration() time.Duration {
return 24 * time.Hour
}
-func (r *RootHandler) SitemapInfo(_ *router.Supplements) []router.SitemapInfo {
- 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"},
- }, nil
-}
-
func (r *RootHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, _ string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = "Choose Your Language"
templateMap["AvailableLanguages"] = supplements.AvailableLanguages
diff --git a/internal/router/handlers/sitemap.xml.go b/internal/router/handlers/sitemap.xml.go
deleted file mode 100644
index bb1df93..0000000
--- a/internal/router/handlers/sitemap.xml.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package handlers
-
-import (
- "log/slog"
- "time"
-
- "github.com/SayaAndy/saya-today-web/internal/router"
- "github.com/gofiber/fiber/v2"
-)
-
-type SitemapXmlHandler struct {
- router.BasicHandler
-}
-
-func init() {
- router.Routes = append(router.Routes, &SitemapXmlHandler{})
-}
-
-func (r *SitemapXmlHandler) Filter() (method string, path string) {
- return "GET", "/sitemap.xml"
-}
-
-func (r *SitemapXmlHandler) IsTemplated() bool {
- return false
-}
-
-func (r *SitemapXmlHandler) TemplatesToInject() []string {
- return []string{"views/pages/sitemap.xml"}
-}
-
-func (r *SitemapXmlHandler) ToCache() router.CacheSetting {
- return router.ByUrlOnly
-}
-
-func (r *SitemapXmlHandler) CacheDuration() time.Duration {
- return time.Hour
-}
-
-func (r *SitemapXmlHandler) ToValidateLang() router.LangSetting {
- return router.NotRequired
-}
-
-func (r *SitemapXmlHandler) ContentType() string {
- return fiber.MIMEApplicationXMLCharsetUTF8
-}
-
-func (r *SitemapXmlHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
- urls := []router.SitemapInfo{}
- for _, route := range router.Routes {
- sitemapInfo := route.SitemapInfo(supplements)
- if sitemapInfo == nil {
- continue
- }
-
- method, match := route.Filter()
- lastMod, err := supplements.TemplateManager.GetLastModified(method + " " + match)
- if err != nil {
- slog.Warn("failed to get last modified for a route",
- slog.String("error", err.Error()),
- slog.String("method", method),
- slog.String("match", match))
- lastMod = time.Now()
- }
-
- for i := range sitemapInfo {
- if sitemapInfo[i].LastModified.Before(lastMod) {
- sitemapInfo[i].LastModified = lastMod
- }
- if sitemapInfo[i].ChangeFreq == "" {
- sitemapInfo[i].ChangeFreq = "monthly"
- }
- urls = append(urls, sitemapInfo[i])
- }
- }
-
- templateMap["URLs"] = urls
-
- return fiber.StatusOK, nil
-}