Use compile-time generated regex and remove loglevel check

This commit is contained in:
SeaEagle1 2023-05-13 00:07:20 +02:00
parent 9352a24374
commit 126047bfd6
No known key found for this signature in database
GPG Key ID: 93B2DF7C2289CC9C

View File

@ -17,7 +17,10 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.PlayTo namespace Emby.Dlna.PlayTo
{ {
public class DlnaHttpClient /// <summary>
/// Http client for Dlna PlayTo function.
/// </summary>
public partial class DlnaHttpClient
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IHttpClientFactory _httpClientFactory; private readonly IHttpClientFactory _httpClientFactory;
@ -62,8 +65,7 @@ namespace Emby.Dlna.PlayTo
var xmlString = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); var xmlString = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
// find and replace unescaped ampersands (&) // find and replace unescaped ampersands (&)
Regex regex = new Regex(@"(&(?![a-z]*;))"); xmlString = EscapeAmpersandRegex().Replace(xmlString, "&amp;");
xmlString = regex.Replace(xmlString, @"&amp;");
try try
{ {
@ -77,10 +79,7 @@ namespace Emby.Dlna.PlayTo
catch (XmlException ex) catch (XmlException ex)
{ {
_logger.LogError(ex, "Failed to parse response"); _logger.LogError(ex, "Failed to parse response");
if (_logger.IsEnabled(LogLevel.Debug)) _logger.LogDebug("Malformed response: {Content}\n", xmlString);
{
_logger.LogDebug("Malformed response: {Content}\n", xmlString);
}
return null; return null;
} }
@ -125,5 +124,12 @@ namespace Emby.Dlna.PlayTo
// Have to await here instead of returning the Task directly, otherwise request would be disposed too soon // Have to await here instead of returning the Task directly, otherwise request would be disposed too soon
return await SendRequestAsync(request, cancellationToken).ConfigureAwait(false); return await SendRequestAsync(request, cancellationToken).ConfigureAwait(false);
} }
/// <summary>
/// Compile-time generated regular expression for escaping ampersands.
/// </summary>
/// <returns>Compiled regular expression.</returns>
[GeneratedRegex("(&(?![a-z]*;))")]
private static partial Regex EscapeAmpersandRegex();
} }
} }