Commit Diff


commit - 1738cb32b92b94d71cf623fa3e84afaef401a211
commit + 2469f6646d48415c8f7f947815762863adbf3133
blob - 1e25afd5c580e5a4af28ac994ad0df2b418c244e
blob + 0b3cec10190214ec99aa7a32c1992548fdb94c62
--- mail.go
+++ mail.go
@@ -99,20 +99,28 @@ func UnmarshalMail(msg *mail.Message) (*Activity, erro
 		if err != nil {
 			return nil, fmt.Errorf("parse To address list: %w", err)
 		}
-		wto, err = fingerAll(to)
+		actors, err := fingerAll(to)
 		if err != nil {
 			return nil, fmt.Errorf("webfinger To addresses: %w", err)
 		}
+		wto = make([]string, len(actors))
+		for i, a := range actors {
+			wto[i] = a.ID
+		}
 	}
 	if msg.Header.Get("CC") != "" {
 		cc, err := msg.Header.AddressList("CC")
 		if err != nil {
 			return nil, fmt.Errorf("parse CC address list: %w", err)
 		}
-		wcc, err = fingerAll(cc)
+		actors, err := fingerAll(cc)
 		if err != nil {
 			return nil, fmt.Errorf("webfinger CC addresses: %w", err)
 		}
+		wcc = make([]string, len(actors))
+		for i, a := range actors {
+			wcc[i] = a.ID
+		}
 	}
 
 	buf := &bytes.Buffer{}
blob - 71d39efe3ee7b43011253ae027a0520cd17bc503
blob + d51eb9237bb67808d536aa8b3ed3dff989ec208e
--- webfinger.go
+++ webfinger.go
@@ -24,8 +24,8 @@ func Finger(address string) (*Actor, error) {
 	return nil, ErrNotExist
 }
 
-func fingerAll(alist []*mail.Address) ([]string, error) {
-	actors := make([]string, len(alist))
+func fingerAll(alist []*mail.Address) ([]Actor, error) {
+	actors := make([]Actor, len(alist))
 	for i, addr := range alist {
 		if strings.Contains(addr.Address, "+followers") {
 			addr.Address = strings.Replace(addr.Address, "+followers", "", 1)
@@ -33,14 +33,14 @@ func fingerAll(alist []*mail.Address) ([]string, error
 			if err != nil {
 				return actors, fmt.Errorf("finger %s: %w", addr.Address, err)
 			}
-			actors[i] = a.Followers
+			actors[i] = *a
 			continue
 		}
 		actor, err := Finger(addr.Address)
 		if err != nil {
 			return actors, fmt.Errorf("finger %s: %w", addr.Address, err)
 		}
-		actors[i] = actor.ID
+		actors[i] = *actor
 	}
 	return actors, nil
 }