From 6be307ffa8a1f4966f34b6b83dcdcc9d09d30cc5 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sun, 9 Jun 2024 21:48:13 -0400 Subject: [PATCH] Use compiled Regex in InternalChatCompletionRequestMessageContentPartImageImageUrl And source generated regex when the library eventually multitargets .NET 8 --- ...CompletionRequestMessageContentPartImageImageUrl.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs b/src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs index 7d6665be..bfbc7cc6 100644 --- a/src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs +++ b/src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs @@ -8,6 +8,14 @@ namespace OpenAI.Chat; [CodeGenSuppress("InternalChatCompletionRequestMessageContentPartImageImageUrl", typeof(string))] internal partial class InternalChatCompletionRequestMessageContentPartImageImageUrl { +#if NET8_0_OR_GREATER + [GeneratedRegex(@"^data:(?.+?);base64,(?.+)$")] + private static partial Regex ParseDataUriRegex(); +#else + private static Regex ParseDataUriRegex() => s_parseDataUriRegex; + private static readonly Regex s_parseDataUriRegex = new(@"^data:(?.+?);base64,(?.+)$", RegexOptions.Compiled); +#endif + private readonly Uri _imageUri = default; private readonly BinaryData _imageBytes = default; private readonly string _imageBytesMediaType = default; @@ -47,7 +55,7 @@ public InternalChatCompletionRequestMessageContentPartImageImageUrl(BinaryData i /// Keeps track of any properties unknown to the library. internal InternalChatCompletionRequestMessageContentPartImageImageUrl(string url, ImageChatMessageContentPartDetail? detail, IDictionary serializedAdditionalRawData) { - Match parsedDataUri = Regex.Match(url, @"^data:(?.+?);base64,(?.+)$"); + Match parsedDataUri = ParseDataUriRegex().Match(url); if (parsedDataUri.Success) {