summaryrefslogtreecommitdiff
path: root/internal/federation/dereferencing/finger.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-08-13 09:01:50 +0000
committerLibravatar GitHub <noreply@github.com>2024-08-13 09:01:50 +0000
commit5212a1057ed05085d4d332976510880c6a692a8e (patch)
tree33ec543f66439328983deb688d3c10ae37e91264 /internal/federation/dereferencing/finger.go
parent[bugfix] incorrect AP serialize function used serializing worker data (#3196) (diff)
downloadgotosocial-5212a1057ed05085d4d332976510880c6a692a8e.tar.xz
[bugfix] relax missing preferred_username, instead using webfingered username (#3189)
* support no preferred_username, instead using webfingered username * add tests for the new preferred_username behaviour
Diffstat (limited to 'internal/federation/dereferencing/finger.go')
-rw-r--r--internal/federation/dereferencing/finger.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/internal/federation/dereferencing/finger.go b/internal/federation/dereferencing/finger.go
index 1b3e915ba..d11950a1e 100644
--- a/internal/federation/dereferencing/finger.go
+++ b/internal/federation/dereferencing/finger.go
@@ -45,6 +45,7 @@ func (d *Dereferencer) fingerRemoteAccount(
username string,
host string,
) (
+ string, // discovered username
string, // discovered account domain
*url.URL, // discovered account URI
error,
@@ -55,31 +56,30 @@ func (d *Dereferencer) fingerRemoteAccount(
b, err := transport.Finger(ctx, username, host)
if err != nil {
err = gtserror.Newf("error webfingering %s: %w", target, err)
- return "", nil, err
+ return "", "", nil, err
}
var resp apimodel.WellKnownResponse
if err := json.Unmarshal(b, &resp); err != nil {
err = gtserror.Newf("error parsing response as JSON for %s: %w", target, err)
- return "", nil, err
+ return "", "", nil, err
}
if len(resp.Links) == 0 {
err = gtserror.Newf("no links found in response for %s", target)
- return "", nil, err
+ return "", "", nil, err
}
if resp.Subject == "" {
err = gtserror.Newf("no subject found in response for %s", target)
- return "", nil, err
+ return "", "", nil, err
}
accUsername, accDomain, err := util.ExtractWebfingerParts(resp.Subject)
if err != nil {
- err = gtserror.Newf("error extracting subject parts for %s: %w", target, err)
- return "", nil, err
+ return "", "", nil, gtserror.Newf("error extracting subject parts for %s: %w", target, err)
} else if accUsername != username {
- return "", nil, gtserror.Newf("response username does not match input for %s: %w", target, err)
+ return "", "", nil, gtserror.Newf("response username does not match input for %s: %w", target, err)
}
// Look through links for the first
@@ -122,8 +122,8 @@ func (d *Dereferencer) fingerRemoteAccount(
}
// All looks good, return happily!
- return accDomain, uri, nil
+ return accUsername, accDomain, uri, nil
}
- return "", nil, gtserror.Newf("no suitable self, AP-type link found in webfinger response for %s", target)
+ return "", "", nil, gtserror.Newf("no suitable self, AP-type link found in webfinger response for %s", target)
}