Skip to content

Commit

Permalink
Use compiled Regex in InternalChatCompletionRequestMessageContentPart…
Browse files Browse the repository at this point in the history
…ImageImageUrl (#32)

And source generated regex when the library eventually multitargets .NET 8
  • Loading branch information
stephentoub authored Jun 10, 2024
1 parent 1c40de6 commit efd76b5
Showing 1 changed file with 9 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ namespace OpenAI.Chat;
[CodeGenSuppress("InternalChatCompletionRequestMessageContentPartImageImageUrl", typeof(string))]
internal partial class InternalChatCompletionRequestMessageContentPartImageImageUrl
{
#if NET8_0_OR_GREATER
[GeneratedRegex(@"^data:(?<type>.+?);base64,(?<data>.+)$")]
private static partial Regex ParseDataUriRegex();
#else
private static Regex ParseDataUriRegex() => s_parseDataUriRegex;
private static readonly Regex s_parseDataUriRegex = new(@"^data:(?<type>.+?);base64,(?<data>.+)$", RegexOptions.Compiled);
#endif

private readonly Uri _imageUri = default;
private readonly BinaryData _imageBytes = default;
private readonly string _imageBytesMediaType = default;
Expand Down Expand Up @@ -47,7 +55,7 @@ public InternalChatCompletionRequestMessageContentPartImageImageUrl(BinaryData i
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
internal InternalChatCompletionRequestMessageContentPartImageImageUrl(string url, ImageChatMessageContentPartDetail? detail, IDictionary<string, BinaryData> serializedAdditionalRawData)
{
Match parsedDataUri = Regex.Match(url, @"^data:(?<type>.+?);base64,(?<data>.+)$");
Match parsedDataUri = ParseDataUriRegex().Match(url);

if (parsedDataUri.Success)
{
Expand Down

0 comments on commit efd76b5

Please sign in to comment.