[backend/federation] Improve webfinger response reuse in UserResolver (ISH-364)

This commit is contained in:
Laura Hausmann 2024-08-13 23:54:44 +02:00
parent acbedd3bae
commit dbed1123aa
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -43,15 +43,18 @@ public class UserResolver(
*/ */
private async Task<(string Acct, string Uri)> WebFingerAsync( private async Task<(string Acct, string Uri)> WebFingerAsync(
string query, bool recurse = true, string? actorUri = null string query, bool recurse = true, string? actorUri = null,
Dictionary<string, WebFingerResponse>? responses = null
) )
{ {
if (actorUri == null) if (actorUri == null)
logger.LogDebug("Running WebFinger for query '{query}'", query); logger.LogDebug("Running WebFinger for query '{query}'", query);
else else
logger.LogDebug("Running WebFinger reverse discovery for query '{query}' and uri '{uri}'", query, actorUri); logger.LogDebug("Performing WebFinger reverse discovery for query '{query}' and uri '{uri}'",
query, actorUri);
responses ??= [];
var responses = new Dictionary<string, WebFingerResponse>();
var fingerRes = await webFingerSvc.ResolveAsync(query); var fingerRes = await webFingerSvc.ResolveAsync(query);
if (fingerRes == null) if (fingerRes == null)
{ {
@ -121,7 +124,7 @@ public class UserResolver(
actor.Normalize(apUri); actor.Normalize(apUri);
var domain = new Uri(actor.Id).Host; var domain = new Uri(actor.Id).Host;
var username = new Uri(actor.Username!).Host; var username = new Uri(actor.Username!).Host;
return await WebFingerAsync($"acct:{username}@{domain}", false, apUri); return await WebFingerAsync($"acct:{username}@{domain}", false, apUri, responses);
} }
catch (Exception e) catch (Exception e)
{ {