8 "webfinger.net/go/webfinger"
11 // Finger is convenience function returning the corresponding Actor,
12 // if any, of an address resolvable by WebFinger.
13 // It is equivalent to doing webfinger.Lookup then LookupActor.
14 func Finger(address string) (*Actor, error) {
15 jrd, err := webfinger.Lookup(address, nil)
19 for i := range jrd.Links {
20 if jrd.Links[i].Type == ContentType {
21 return LookupActor(jrd.Links[i].Href)
24 return nil, ErrNotExist
27 func fingerAll(alist []*mail.Address) ([]Actor, error) {
28 actors := make([]Actor, len(alist))
29 for i, addr := range alist {
30 if strings.Contains(addr.Address, "+followers") {
31 addr.Address = strings.Replace(addr.Address, "+followers", "", 1)
32 a, err := Finger(addr.Address)
34 return actors, fmt.Errorf("finger %s: %w", addr.Address, err)
39 actor, err := Finger(addr.Address)
41 return actors, fmt.Errorf("finger %s: %w", addr.Address, err)