Add HTTP status formatting/parsing to ResultView
Added FormatHttpStatusInfo and ParseHttpStatusInfo methods to ResultView for converting between HttpStatusCode values and "statusCode statusName" strings. Included supporting Regex and necessary using directives.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using ReC.Domain.Constants;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Net;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ReC.Domain.Views;
|
||||
|
||||
@@ -62,4 +64,34 @@ public class ResultView
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
private static readonly Regex HttpStatusInfoRegex = new(@"^(\d{3})\s+(.+)$", RegexOptions.Compiled);
|
||||
|
||||
/// <summary>
|
||||
/// Formats an <see cref="HttpStatusCode"/> into a string in the form "statusCode statusName".
|
||||
/// For example, <see cref="HttpStatusCode.NotFound"/> becomes "404 Not Found".
|
||||
/// </summary>
|
||||
public static string FormatHttpStatusInfo(HttpStatusCode statusCode)
|
||||
{
|
||||
var code = (int)statusCode;
|
||||
var name = statusCode.ToString();
|
||||
var displayName = Regex.Replace(name, "(?<!^)([A-Z])", " $1");
|
||||
return $"{code} {displayName}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parses an Info string in the form "statusCode statusName" back into its components.
|
||||
/// Returns <c>null</c> if the string does not match the expected format.
|
||||
/// </summary>
|
||||
public static (int StatusCode, string StatusName)? ParseHttpStatusInfo(string? info)
|
||||
{
|
||||
if (info is null)
|
||||
return null;
|
||||
|
||||
var match = HttpStatusInfoRegex.Match(info);
|
||||
if (!match.Success)
|
||||
return null;
|
||||
|
||||
return (int.Parse(match.Groups[1].Value), match.Groups[2].Value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user