turn kind1063Metadata into a struct.

This commit is contained in:
fiatjaf
2023-10-30 22:28:33 -03:00
parent f3997b78ae
commit 2fecd4e5f2
3 changed files with 80 additions and 53 deletions

101
data.go
View File

@@ -85,7 +85,23 @@ type Data struct {
videoType string
image string
content string
kind1063Metadata map[string]string
alt string
kind1063Metadata *Kind1063Metadata
}
type Kind1063Metadata struct {
magnet string
dim string
size string
summary string
image string
url string
aes256gcm string
m string
x string
i string
blurhash string
thumb string
}
func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, error) {
@@ -119,7 +135,8 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e
authorRelays := []string{}
var content string
var templateId TemplateID
var kind1063Metadata map[string]string
var alt string
var kind1063Metadata *Kind1063Metadata
eventRelays := []string{}
for _, relay := range relays {
@@ -134,6 +151,10 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e
eventRelays = append(eventRelays, trimProtocol(relay))
}
if tag := event.Tags.GetFirst([]string{"alt", ""}); tag != nil {
alt = (*tag)[1]
}
switch event.Kind {
case 0:
{
@@ -176,39 +197,44 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e
}
case 1063:
templateId = FileMetadata
kind1063Metadata = make(map[string]string)
kind1063Metadata = &Kind1063Metadata{}
keysToExtract := []string{
"url",
"m",
"aes-256-gcm",
"x",
"size",
"dim",
"magnet",
"i",
"blurhash",
"thumb",
"image",
"summary",
"alt",
if tag := event.Tags.GetFirst([]string{"url", ""}); tag != nil {
kind1063Metadata.url = (*tag)[1]
}
for _, tag := range event.Tags {
if len(tag) == 2 {
key := tag[0]
value := tag[1]
// Check if the key is in the list of keys to extract
for _, k := range keysToExtract {
if key == k {
kind1063Metadata[key] = value
break
}
}
}
if tag := event.Tags.GetFirst([]string{"m", ""}); tag != nil {
kind1063Metadata.m = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"aes-256-gcm", ""}); tag != nil {
kind1063Metadata.aes256gcm = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"x", ""}); tag != nil {
kind1063Metadata.x = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"size", ""}); tag != nil {
kind1063Metadata.size = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"dim", ""}); tag != nil {
kind1063Metadata.dim = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"magnet", ""}); tag != nil {
kind1063Metadata.magnet = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"i", ""}); tag != nil {
kind1063Metadata.i = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"blurhash", ""}); tag != nil {
kind1063Metadata.blurhash = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"thumb", ""}); tag != nil {
kind1063Metadata.thumb = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"image", ""}); tag != nil {
kind1063Metadata.image = (*tag)[1]
}
if tag := event.Tags.GetFirst([]string{"summary", ""}); tag != nil {
kind1063Metadata.summary = (*tag)[1]
}
default:
if event.Kind >= 30000 && event.Kind < 40000 {
templateId = Other
@@ -238,11 +264,11 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e
var video string
var videoType string
if event.Kind == 1063 {
if strings.HasPrefix(kind1063Metadata["m"], "image") {
image = kind1063Metadata["url"]
} else if strings.HasPrefix(kind1063Metadata["m"], "video") {
video = kind1063Metadata["url"]
videoType = strings.Split(kind1063Metadata["m"], "/")[1]
if strings.HasPrefix(kind1063Metadata.m, "image") {
image = kind1063Metadata.url
} else if strings.HasPrefix(kind1063Metadata.m, "video") {
video = kind1063Metadata.url
videoType = strings.Split(kind1063Metadata.m, "/")[1]
}
} else {
urls := urlMatcher.FindAllString(event.Content, -1)
@@ -304,6 +330,7 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e
videoType: videoType,
image: image,
content: content,
alt: alt,
kind1063Metadata: kind1063Metadata,
}, nil
}

View File

@@ -270,7 +270,7 @@ type FileMetadataPage struct {
ParentLink template.HTML
Proxy string
SeenOn []string
Style string
Style Style
Subject string
TextImageURL string
Title string

View File

@@ -231,10 +231,10 @@ func renderEvent(w http.ResponseWriter, r *http.Request) {
SeenOn: data.relays,
Npub: data.npub,
Nprofile: data.nprofile,
Magnet: data.kind1063Metadata["magnet"],
Dim: data.kind1063Metadata["dim"],
Size: data.kind1063Metadata["size"],
Summary: data.kind1063Metadata["summary"],
Magnet: data.kind1063Metadata.magnet,
Dim: data.kind1063Metadata.dim,
Size: data.kind1063Metadata.size,
Summary: data.kind1063Metadata.summary,
}
switch data.templateId {
@@ -285,7 +285,7 @@ func renderEvent(w http.ResponseWriter, r *http.Request) {
VideoType: data.videoType,
})
case FileMetadata:
thisImage := data.kind1063Metadata["image"]
thisImage := data.kind1063Metadata.image
if thisImage == "" && data.image != "" {
thisImage = data.image
}
@@ -298,7 +298,7 @@ func renderEvent(w http.ResponseWriter, r *http.Request) {
},
DetailsPartial: detailsData,
ClientsPartial: ClientsPartial{
Clients: generateClientList(code, data.event),
Clients: generateClientList(style, code, data.event),
},
AuthorLong: data.authorLong,
@@ -315,16 +315,16 @@ func renderEvent(w http.ResponseWriter, r *http.Request) {
TwitterTitle: twitterTitle,
Video: data.video,
VideoType: data.videoType,
Url: data.kind1063Metadata["url"],
M: data.kind1063Metadata["m"],
Aes256Gcm: data.kind1063Metadata["aes-256-gcm"],
X: data.kind1063Metadata["x"],
I: data.kind1063Metadata["i"],
Blurhash: data.kind1063Metadata["blurhash"],
Thumb: data.kind1063Metadata["thumb"],
Url: data.kind1063Metadata.url,
M: data.kind1063Metadata.m,
Aes256Gcm: data.kind1063Metadata.aes256gcm,
X: data.kind1063Metadata.x,
I: data.kind1063Metadata.i,
Blurhash: data.kind1063Metadata.blurhash,
Thumb: data.kind1063Metadata.thumb,
Image: thisImage,
Alt: data.kind1063Metadata["alt"],
MType: strings.Split(data.kind1063Metadata["m"], "/")[0],
Alt: data.alt,
MType: strings.Split(data.kind1063Metadata.m, "/")[0],
})
case Other:
err = OtherTemplate.Render(w, &OtherPage{