openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
achandmsft-patch-2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/Utility/DataEncodingHelpers.cs

42lines · modeblame

5dce104aJose Arriaga Maldonado1 years ago1using System;
2using System.Text.RegularExpressions;
3
4#nullable enable
5
6namespace OpenAI;
7
8internal static partial class DataEncodingHelpers
9{
10#if NET8_0_OR_GREATER
11[GeneratedRegex(@"^data:(?<type>.+?);base64,(?<data>.+)$")]
12private static partial Regex ParseDataUriRegex();
13#else
14private static Regex ParseDataUriRegex() => s_parseDataUriRegex;
15private static readonly Regex s_parseDataUriRegex = new(@"^data:(?<type>.+?);base64,(?<data>.+)$", RegexOptions.Compiled);
16#endif
17
18public static bool TryParseDataUri(string dataUri, out BinaryData? bytes, out string? bytesMediaType)
19{
20Match parsedDataUri = ParseDataUriRegex().Match(dataUri);
21
22if (!parsedDataUri.Success)
23{
24bytes = null;
25bytesMediaType = null;
26return false;
27}
28
29string matchedBase64Data = parsedDataUri.Groups["data"].Value;
30byte[] matchedBase64RawBytes = Convert.FromBase64String(matchedBase64Data);
31
32bytes = BinaryData.FromBytes(matchedBase64RawBytes);
33bytesMediaType = parsedDataUri.Groups["type"].Value;
34return true;
35}
36
37public static string CreateDataUri(BinaryData bytes, string bytesMediaType)
38{
39string base64Bytes = Convert.ToBase64String(bytes.ToArray());
40return $"data:{bytesMediaType};base64,{base64Bytes}";
41}
42}