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