public static void Main()
Uri value = new Uri("https://ai.mmmlabs.com/whatever?foo=bar&boo=baz");
var built = BuildURLWithData(value, "yo this is some great data");
Console.WriteLine(built);
private static Uri BuildURLWithData(Uri uri, string data)
throw new ArgumentException("URL must be absolute.");
if(uri.Scheme != "https")
throw new ArgumentException("URL must be https.");
byte[] dataAsUtf8 = System.Text.Encoding.UTF8.GetBytes(data);
string dataQueryString = $"data={WebUtility.UrlEncode(Convert.ToBase64String(dataAsUtf8))}";
UriBuilder builder = new UriBuilder(uri);
if(builder.Query.Length > 1)
builder.Query = $"{builder.Query.Substring(1)}&{dataQueryString}";
builder.Query = dataQueryString;
Uri finalUri = builder.Uri;