commit - 2469f6646d48415c8f7f947815762863adbf3133
commit + d802abd847c6b52b945a90acdc5e26935f8859f8
blob - b51d6126a1a803d43253f2f12cb04b127470f2f9
blob + 394107211718e1725e4598c31f9e1b2d8b3fb3bf
--- apub.go
+++ apub.go
} `json:"source,omitempty"`
PublicKey *PublicKey `json:"publicKey,omitempty"`
Audience string `json:"audience,omitempty"`
+ Href string `json:"href,omitempty"`
Tag []Activity `json:"tag,omitempty"`
Object json.RawMessage `json:"object,omitempty"`
}
blob - 0b3cec10190214ec99aa7a32c1992548fdb94c62
blob + bed76fae19b3fa04905356980c77324b465eb3ae
--- mail.go
+++ mail.go
}
var wto, wcc []string
+ var tags []Activity
if msg.Header.Get("To") != "" {
to, err := msg.Header.AddressList("To")
// ignore missing To line. Some ActivityPub servers only have the
return nil, fmt.Errorf("webfinger To addresses: %w", err)
}
wto = make([]string, len(actors))
+ tags = make([]Activity, len(actors))
for i, a := range actors {
+ addr := strings.Trim(to[i].Address, "<>")
+ tags[i] = Activity{Type: "Mention", Href: a.ID, Name: "@" + addr}
wto[i] = a.ID
}
}
Content: strings.TrimSpace(buf.String()),
InReplyTo: strings.Trim(msg.Header.Get("In-Reply-To"), "<>"),
Published: &date,
+ Tag: tags,
}, nil
}
blob - 719f8db1b08a80ce3600fde0a0a856af9267803f
blob + 61bf051284c44bab0c9c0ee8b84609ae5bcdff77
--- mail_test.go
+++ mail_test.go
{
"testdata/actor/lemmy.json",
"<Spotlight7573@lemmy.world>",
- "<@>", // empty mail.Address
+ "<@>", // zero mail.Address
},
}
for _, tt := range tests {
if testing.Short() {
t.Skip("skipping network calls to unmarshal mail message to Activity")
}
- if _, err := UnmarshalMail(msg); err != nil {
+ a, err := UnmarshalMail(msg)
+ if err != nil {
t.Fatal(err)
}
+ if len(a.Tag) != 1 {
+ t.Fatalf("wanted 1 tag in unmarshalled activity, got %d", len(a.Tag))
+ }
+ want := "@henfredemars@infosec.pub"
+ if a.Tag[0].Name != want {
+ t.Errorf("wanted tag name %s, got %s", want, a.Tag[0].Name)
+ }
}