[backend/federation] Reuse XmlSerializer in WebFingerService

This commit is contained in:
Laura Hausmann 2024-08-14 20:16:28 +02:00
parent 28f89f8a18
commit 192f3f0312
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -38,6 +38,8 @@ public class WebFingerService(
private static XmlReaderSettings _xmlReaderSettings =
new() { DtdProcessing = DtdProcessing.Ignore, XmlResolver = null };
private static readonly XmlSerializer XmlSerializer = new(typeof(WebFingerResponse));
public async Task<WebFingerResponse?> ResolveAsync(string query)
{
(query, var proto, var domain) = ParseQuery(query);
@ -64,10 +66,9 @@ public class WebFingerService(
_xmlReaderSettings = new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, XmlResolver = null };
var reader = XmlReader.Create(await res.Content.ReadAsStreamAsync(cts.Token), _xmlReaderSettings);
var deserializer = new XmlSerializer(typeof(WebFingerResponse));
var reader = XmlReader.Create(await res.Content.ReadAsStreamAsync(cts.Token), _xmlReaderSettings);
return deserializer.Deserialize(reader) as WebFingerResponse ??
return XmlSerializer.Deserialize(reader) as WebFingerResponse ??
throw new Exception("Failed to deserialize xml payload");
}