8 "webfinger.net/go/webfinger"
11 // Finger wraps defaultClient.Finger.
12 func Finger(address string) (*Actor, error) {
13 return DefaultClient.Finger(address)
16 // Finger is convenience method returning the corresponding Actor,
17 // if any, of an address resolvable by WebFinger.
18 // It is equivalent to doing webfinger.Lookup then LookupActor.
19 func (c *Client) Finger(address string) (*Actor, error) {
20 jrd, err := webfinger.Lookup(address, nil)
24 for i := range jrd.Links {
25 if jrd.Links[i].Type == ContentType {
26 return c.LookupActor(jrd.Links[i].Href)
29 return nil, ErrNotExist
32 func (c *Client) fingerAll(alist []*mail.Address) ([]Actor, error) {
33 actors := make([]Actor, len(alist))
34 for i, addr := range alist {
36 if strings.Contains(addr.Address, "+followers") {
37 // strip "+followers" to get the regular address that can be fingered.
38 q = strings.Replace(addr.Address, "+followers", "", 1)
40 actor, err := c.Finger(q)
42 return actors, fmt.Errorf("finger %s: %w", q, err)