diff --git a/pages/post/opengraph.go b/pages/post/opengraph.go new file mode 100644 index 00000000..13058d57 --- /dev/null +++ b/pages/post/opengraph.go @@ -0,0 +1,21 @@ +package post + +import ( + "github.com/aerogo/aero" + "github.com/animenotifier/arn" + "github.com/animenotifier/notify.moe/utils" +) + +func getOpenGraph(ctx *aero.Context, post *arn.Post) *arn.OpenGraph { + openGraph := &arn.OpenGraph{ + Tags: map[string]string{ + "og:title": post.TitleByUser(nil), + "og:description": utils.CutLongDescription(post.Text), + "og:url": "https://" + ctx.App.Config.Domain + post.Link(), + "og:site_name": ctx.App.Config.Domain, + "og:type": "article", + }, + } + + return openGraph +} diff --git a/pages/post/post.go b/pages/post/post.go index 8734f643..420019e2 100644 --- a/pages/post/post.go +++ b/pages/post/post.go @@ -19,5 +19,6 @@ func Get(ctx *aero.Context) string { return ctx.Error(http.StatusNotFound, "Post not found", err) } + ctx.Data = getOpenGraph(ctx, post) return ctx.HTML(components.Post(post, user)) } diff --git a/pages/thread/opengraph.go b/pages/thread/opengraph.go new file mode 100644 index 00000000..dffad9e0 --- /dev/null +++ b/pages/thread/opengraph.go @@ -0,0 +1,21 @@ +package thread + +import ( + "github.com/aerogo/aero" + "github.com/animenotifier/arn" + "github.com/animenotifier/notify.moe/utils" +) + +func getOpenGraph(ctx *aero.Context, thread *arn.Thread) *arn.OpenGraph { + openGraph := &arn.OpenGraph{ + Tags: map[string]string{ + "og:title": thread.Title, + "og:description": utils.CutLongDescription(thread.Text), + "og:url": "https://" + ctx.App.Config.Domain + thread.Link(), + "og:site_name": ctx.App.Config.Domain, + "og:type": "article", + }, + } + + return openGraph +} diff --git a/pages/thread/thread.go b/pages/thread/thread.go index ae851eb3..c4e1aa03 100644 --- a/pages/thread/thread.go +++ b/pages/thread/thread.go @@ -21,5 +21,6 @@ func Get(ctx *aero.Context) string { return ctx.Error(http.StatusNotFound, "Thread not found", err) } + ctx.Data = getOpenGraph(ctx, thread) return ctx.HTML(components.Thread(thread, user)) }