Files
fnx_web/webcontroller/opengraph.go

88 lines
3.6 KiB
Go
Raw Normal View History

2017-12-17 18:10:59 +01:00
package webcontroller
import (
2019-07-06 19:36:04 +02:00
"strings"
2021-03-10 20:13:32 +01:00
"fornaxian.tech/pixeldrain_api_client/pixelapi"
2017-12-17 18:10:59 +01:00
)
2020-12-07 22:23:29 +01:00
type ogData struct {
OGRules []ogProp
TwitterRules []ogProp
LinkRules []ogProp
2019-07-06 19:36:04 +02:00
}
2020-12-07 22:23:29 +01:00
type ogProp struct {
Key string
Value string
2019-07-06 19:36:04 +02:00
}
2020-12-07 22:23:29 +01:00
func (og *ogData) addOG(k, v string) { og.OGRules = append(og.OGRules, ogProp{k, v}) }
func (og *ogData) addTwitter(k, v string) { og.TwitterRules = append(og.TwitterRules, ogProp{k, v}) }
func (og *ogData) addLink(k, v string) { og.LinkRules = append(og.LinkRules, ogProp{k, v}) }
2019-07-06 19:36:04 +02:00
2021-03-10 20:13:32 +01:00
func (wc *WebController) metadataFromFile(f pixelapi.FileInfo) (og ogData) {
2020-12-07 22:23:29 +01:00
og.addOG("og:title", f.Name)
og.addOG("og:site_name", "pixeldrain")
og.addOG("og:description", "This file has been shared with you on pixeldrain")
og.addOG("description", "This file has been shared with you on pixeldrain")
2021-01-12 23:20:32 +01:00
og.addOG("og:url", wc.websiteAddress+"/u/"+f.ID)
2020-12-07 22:23:29 +01:00
og.addTwitter("twitter:title", f.Name)
og.addTwitter("twitter:site", "@Fornax96")
og.addTwitter("twitter:domain", "pixeldrain.com")
2019-07-06 19:36:04 +02:00
if strings.HasPrefix(f.MimeType, "image") {
2020-12-07 22:23:29 +01:00
og.addOG("og:type", "article")
2021-01-12 23:20:32 +01:00
og.addOG("og:image", wc.websiteAddress+"/api/file/"+f.ID)
og.addOG("og:image:url", wc.websiteAddress+"/api/file/"+f.ID)
og.addOG("og:image:secure_url", wc.websiteAddress+"/api/file/"+f.ID)
2020-12-07 22:23:29 +01:00
og.addOG("og:image:type", f.MimeType)
2019-07-06 19:36:04 +02:00
2020-12-07 22:23:29 +01:00
og.addTwitter("twitter:card", "summary_large_image")
2021-01-12 23:20:32 +01:00
og.addTwitter("twitter:image", wc.websiteAddress+"/api/file/"+f.ID)
og.addLink("image_src", wc.websiteAddress+"/api/file/"+f.ID)
2019-07-06 19:36:04 +02:00
} else if strings.HasPrefix(f.MimeType, "video") {
2020-12-07 22:23:29 +01:00
og.addOG("og:type", "video.other")
2021-01-12 23:20:32 +01:00
og.addOG("og:image", wc.websiteAddress+"/api/file/"+f.ID+"/thumbnail")
og.addOG("og:video", wc.websiteAddress+"/api/file/"+f.ID)
og.addOG("og:video:url", wc.websiteAddress+"/api/file/"+f.ID)
og.addOG("og:video:secure_url", wc.websiteAddress+"/api/file/"+f.ID)
2020-12-07 22:23:29 +01:00
og.addOG("og:video:type", f.MimeType)
2019-07-06 19:36:04 +02:00
2020-12-07 22:23:29 +01:00
og.addTwitter("twitter:card", "player")
2021-01-12 23:20:32 +01:00
og.addTwitter("twitter:image", wc.websiteAddress+"/api/file/"+f.ID+"/thumbnail")
og.addTwitter("twitter:player", wc.websiteAddress+"/api/file/"+f.ID)
og.addTwitter("twitter:player:stream", wc.websiteAddress+"/api/file/"+f.ID)
2020-12-07 22:23:29 +01:00
og.addTwitter("twitter:player:stream:content_type", f.MimeType)
2021-01-12 23:20:32 +01:00
og.addLink("image_src", wc.websiteAddress+"/api/file/"+f.ID+"/thumbnail")
2019-07-06 19:36:04 +02:00
} else if strings.HasPrefix(f.MimeType, "audio") {
2020-12-07 22:23:29 +01:00
og.addOG("og:type", "music.song")
2021-01-12 23:20:32 +01:00
og.addOG("og:audio", wc.websiteAddress+"/api/file/"+f.ID)
og.addOG("og:audio:secure_url", wc.websiteAddress+"/api/file/"+f.ID)
2020-12-07 22:23:29 +01:00
og.addOG("og:audio:type", f.MimeType)
2021-01-12 23:20:32 +01:00
og.addLink("image_src", wc.websiteAddress+"/api/file/"+f.ID+"/thumbnail")
2019-07-06 19:36:04 +02:00
} else {
2020-12-07 22:23:29 +01:00
og.addOG("og:type", "website")
2021-01-12 23:20:32 +01:00
og.addLink("image_src", wc.websiteAddress+"/api/file/"+f.ID+"/thumbnail")
2019-07-06 19:36:04 +02:00
}
2020-12-07 22:23:29 +01:00
return og
2019-07-06 19:36:04 +02:00
}
2021-03-10 20:13:32 +01:00
func (wc *WebController) metadataFromList(l pixelapi.ListInfo) (og ogData) {
2020-12-07 22:23:29 +01:00
og.addOG("og:type", "website")
og.addOG("og:title", l.Title)
og.addOG("og:site_name", "pixeldrain")
og.addOG("og:description", "A collection of files on pixeldrain")
og.addOG("description", "A collection of files on pixeldrain")
2021-01-12 23:20:32 +01:00
og.addOG("og:url", wc.websiteAddress+"/l/"+l.ID)
2020-12-07 22:23:29 +01:00
og.addTwitter("twitter:title", l.Title)
og.addTwitter("twitter:site", "@Fornax96")
og.addTwitter("twitter:domain", "pixeldrain.com")
2019-12-10 14:47:11 +01:00
if l.FileCount > 0 {
2021-01-12 23:20:32 +01:00
og.addOG("og:image", wc.websiteAddress+"/api/file/"+l.Files[0].ID+"/thumbnail")
og.addOG("og:image:url", wc.websiteAddress+"/api/file/"+l.Files[0].ID+"/thumbnail")
og.addTwitter("twitter:image", wc.websiteAddress+"/api/file/"+l.Files[0].ID+"/thumbnail")
og.addLink("image_src", wc.websiteAddress+"/api/file/"+l.Files[0].ID+"/thumbnail")
2019-12-10 14:47:11 +01:00
}
2020-12-07 22:23:29 +01:00
return og
2017-12-17 18:10:59 +01:00
}