2017-12-17 18:10:59 +01:00
|
|
|
package webcontroller
|
|
|
|
|
|
|
|
import (
|
2019-07-06 19:36:04 +02:00
|
|
|
"strings"
|
|
|
|
|
2020-07-29 17:27:36 +02:00
|
|
|
"fornaxian.tech/pixeldrain_server/api/restapi/apitype"
|
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
|
|
|
|
2020-12-07 22:23:29 +01:00
|
|
|
func metadataFromFile(f apitype.FileInfo) (og ogData) {
|
|
|
|
og.addOG("og:title", f.Name)
|
|
|
|
og.addOG("og:site_name", "pixeldrain")
|
|
|
|
og.addOG("og:description", "View '"+f.Name+"' on pixeldrain")
|
|
|
|
og.addOG("description", "View '"+f.Name+"' on pixeldrain")
|
|
|
|
og.addOG("og:url", "/u/"+f.ID)
|
|
|
|
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")
|
|
|
|
og.addOG("og:image", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:image:url", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:image:secure_url", "/api/file/"+f.ID)
|
|
|
|
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")
|
|
|
|
og.addTwitter("twitter:image", "/api/file/"+f.ID)
|
|
|
|
og.addLink("image_src", "/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")
|
|
|
|
og.addOG("og:image", "/api/file/"+f.ID+"/thumbnail")
|
|
|
|
og.addOG("og:video", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:video:url", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:video:secure_url", "/api/file/"+f.ID)
|
|
|
|
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")
|
|
|
|
og.addTwitter("twitter:image", "/api/file/"+f.ID+"/thumbnail")
|
|
|
|
og.addTwitter("twitter:player", "/api/file/"+f.ID)
|
|
|
|
og.addTwitter("twitter:player:stream", "/api/file/"+f.ID)
|
|
|
|
og.addTwitter("twitter:player:stream:content_type", f.MimeType)
|
|
|
|
og.addLink("image_src", "/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")
|
|
|
|
og.addOG("og:audio", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:audio:secure_url", "/api/file/"+f.ID)
|
|
|
|
og.addOG("og:audio:type", f.MimeType)
|
|
|
|
og.addLink("image_src", "/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")
|
|
|
|
og.addLink("image_src", "/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
|
|
|
}
|
2020-12-07 22:23:29 +01:00
|
|
|
func metadataFromList(l apitype.ListInfo) (og ogData) {
|
|
|
|
og.addOG("og:type", "website")
|
|
|
|
og.addOG("og:title", l.Title)
|
|
|
|
og.addOG("og:site_name", "pixeldrain")
|
|
|
|
og.addOG("og:description", "View '"+l.Title+"' on pixeldrain")
|
|
|
|
og.addOG("description", "View '"+l.Title+"' on pixeldrain")
|
|
|
|
og.addOG("og:url", "/l/"+l.ID)
|
|
|
|
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 {
|
2020-12-07 22:23:29 +01:00
|
|
|
og.addOG("og:image", "/api/file/"+l.Files[0].ID+"/thumbnail")
|
|
|
|
og.addOG("og:image:url", "/api/file/"+l.Files[0].ID+"/thumbnail")
|
|
|
|
og.addTwitter("twitter:image", "/api/file/"+l.Files[0].ID+"/thumbnail")
|
|
|
|
og.addLink("image_src", "/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
|
|
|
}
|