[backend/core] Fix UserResolver regression

This commit is contained in:
Laura Hausmann 2024-10-29 20:38:51 +01:00
parent 912c50488f
commit a5f292cdb3
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -241,14 +241,17 @@ public class UserResolver(
/// <returns>The user in question.</returns>
private async Task<Result<User>> ResolveInternalAsync(string query, ResolveFlags flags)
{
if (query.StartsWith('@'))
query = "acct:" + query[1..];
// Before we begin, validate method parameters
// Before we begin, validate method parameters & canonicalize query
if (flags == 0)
throw new Exception("ResolveFlags.None is not valid for this method");
if (query.Contains(' ') || !Uri.TryCreate(query, UriKind.Absolute, out var parsedQuery))
return GracefulException.BadRequest("Invalid query");
if (query.Contains(' '))
return GracefulException.BadRequest($"Invalid query: {query}");
if (query.StartsWith('@'))
query = $"acct:{query[1..]}";
if (!Uri.TryCreate(query, UriKind.Absolute, out var parsedQuery))
query = $"acct:{query}";
if (parsedQuery == null && !Uri.TryCreate(query, UriKind.Absolute, out parsedQuery))
return GracefulException.BadRequest($"Invalid query: {query}");
if (parsedQuery.Scheme is not "https" and not "acct")
return GracefulException.BadRequest("Invalid query scheme");
if (parsedQuery.AbsolutePath.StartsWith("/notes/"))