ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.391.3

This commit is contained in:
speakeasybot
2024-09-06 17:13:00 +00:00
parent 2bed38d2cb
commit d077d5e9f0
610 changed files with 4195 additions and 3384 deletions

View File

@@ -0,0 +1,536 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Utils
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net.Http;
using System.Reflection;
using System.Text;
internal class RequestBodySerializer
{
public static HttpContent? Serialize(
object? request,
string requestFieldName,
string serializationMethod,
bool nullable = false,
bool optional = false,
string format = ""
)
{
if (request == null)
{
if (!nullable && !optional)
{
throw new ArgumentNullException("request body is required");
}
else if (nullable && serializationMethod == "json")
{
return new StringContent("null", Encoding.UTF8, "application/json");
}
return null;
}
if (Utilities.IsClass(request))
{
var prop = GetPropertyInfo(request, requestFieldName);
if (prop != null)
{
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetRequestMetadata();
if (metadata != null)
{
var fieldValue = prop.GetValue(request);
if (fieldValue == null)
{
return null;
}
return TrySerialize(
fieldValue,
requestFieldName,
serializationMethod,
metadata.MediaType ?? ""
);
}
}
}
// Not an object or flattened request
return TrySerialize(request, requestFieldName, serializationMethod, "", format);
}
private static HttpContent? TrySerialize(
object request,
string requestFieldName,
string serializationMethod,
string mediaType = "",
string format = ""
)
{
if (mediaType == "")
{
mediaType = new Dictionary<string, string>()
{
{ "json", "application/json" },
{ "form", "application/x-www-form-urlencoded" },
{ "multipart", "multipart/form-data" },
{ "raw", "application/octet-stream" },
{ "string", "text/plain" },
}[serializationMethod];
}
switch (serializationMethod)
{
case "json":
return SerializeJson(request, mediaType, format);
case "form":
return SerializeForm(request, requestFieldName, mediaType);
case "multipart":
return SerializeMultipart(request, mediaType);
default:
// if request is a byte array, use it directly otherwise encode
if (request.GetType() == typeof(byte[]))
{
return SerializeRaw((byte[])request, mediaType);
}
else if (request.GetType() == typeof(string))
{
return SerializeString((string)request, mediaType);
}
else
{
throw new Exception(
"Cannot serialize request body of type "
+ request.GetType().Name
+ " with serialization method "
+ serializationMethod
+ ""
);
}
}
}
private static HttpContent SerializeJson(object request, string mediaType, string format = "")
{
return new StringContent(Utilities.SerializeJSON(request, format), Encoding.UTF8, mediaType);
}
private static HttpContent SerializeForm(
object request,
string requestFieldName,
string mediaType
)
{
Dictionary<string, List<string>> form = new Dictionary<string, List<string>>();
if (Utilities.IsClass(request))
{
var props = request.GetType().GetProperties();
foreach (var prop in props)
{
var val = prop.GetValue(request);
if (val == null)
{
continue;
}
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetFormMetadata();
if (metadata == null)
{
continue;
}
if (metadata.Json)
{
var key = metadata.Name ?? prop.Name;
if (key == "")
{
continue;
}
if (!form.ContainsKey(key))
{
form.Add(key, new List<string>());
}
form[key].Add(Utilities.SerializeJSON(val));
}
else
{
switch (metadata.Style)
{
case "form":
SerializeFormValue(
metadata.Name ?? prop.Name,
metadata.Explode,
val,
ref form
);
break;
default:
throw new Exception("Unsupported form style " + metadata.Style);
}
}
}
}
else if (Utilities.IsDictionary(request))
{
foreach (var k in ((IDictionary)request).Keys)
{
var key = k?.ToString();
if (key == null)
{
continue;
}
if (!form.ContainsKey(key))
{
form.Add(key, new List<string>());
}
form[key].Add(Utilities.ValueToString(((IDictionary)request)[key]));
}
}
else if (Utilities.IsList(request))
{
foreach (var item in (IList)request)
{
if (!form.ContainsKey(requestFieldName))
{
form.Add(requestFieldName, new List<string>());
}
form[requestFieldName].Add(Utilities.ValueToString(item));
}
}
else
{
throw new Exception(
"Cannot serialize form data from type " + request.GetType().Name
);
}
var formData = new List<KeyValuePair<string?, string?>>();
foreach (var key in form.Keys)
{
foreach (var val in form[key])
{
formData.Add(
new KeyValuePair<string?, string?>(
key + (form[key].Count > 1 ? "[]" : ""),
val
)
);
}
}
return new FormUrlEncodedContent(formData);
}
private static HttpContent SerializeMultipart(object request, string mediaType)
{
var formData = new MultipartFormDataContent();
var properties = request.GetType().GetProperties();
foreach (var prop in properties)
{
var value = prop.GetValue(request);
if (value == null)
{
continue;
}
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetMultipartFormMetadata();
if (metadata == null)
{
continue;
}
if (metadata.File)
{
if (!Utilities.IsClass(value))
{
throw new Exception(
"Cannot serialize multipart file from type " + value.GetType().Name
);
}
var fileProps = value.GetType().GetProperties();
byte[]? content = null;
string fileName = "";
string fieldName = "";
foreach (var fileProp in fileProps)
{
var fileMetadata = fileProp
.GetCustomAttribute<SpeakeasyMetadata>()
?.GetMultipartFormMetadata();
if (
fileMetadata == null
|| (!fileMetadata.Content && fileMetadata.Name == "")
)
{
continue;
}
if (fileMetadata.Content)
{
content = (byte[]?)fileProp.GetValue(value);
}
else
{
fieldName = fileMetadata.Name ?? fileProp.Name;
fileName = fileProp.GetValue(value)?.ToString() ?? "";
}
}
if (fieldName == "" || fileName == "" || content == null)
{
throw new Exception("Invalid multipart/form-data file");
}
formData.Add(new ByteArrayContent(content), fieldName, fileName);
}
else if (metadata.Json)
{
formData.Add(
new StringContent(Utilities.SerializeJSON(value)),
metadata.Name ?? prop.Name
);
}
else if (Utilities.IsList(value))
{
var values = new List<string>();
foreach (var item in (IList)value)
{
values.Add(Utilities.ValueToString(item));
}
foreach (var val in values)
{
formData.Add(new StringContent(val), metadata.Name ?? prop.Name);
}
}
else
{
formData.Add(
new StringContent(Utilities.ValueToString(value)),
metadata.Name ?? prop.Name
);
}
}
return formData;
}
private static HttpContent SerializeRaw(byte[] request, string mediaType)
{
var content = new ByteArrayContent(request);
content.Headers.Add("Content-Type", mediaType);
return content;
}
private static HttpContent SerializeString(string request, string mediaType)
{
return new StringContent(request, Encoding.UTF8, mediaType);
}
private static void SerializeFormValue(
string fieldName,
bool explode,
object value,
ref Dictionary<string, List<string>> form
)
{
if (Utilities.IsClass(value))
{
if (Utilities.IsDate(value))
{
if (!form.ContainsKey(fieldName))
{
form[fieldName] = new List<string>();
}
form[fieldName].Add(Utilities.ValueToString(value));
}
else
{
var props = value.GetType().GetProperties();
var items = new List<string>();
foreach (var prop in props)
{
var val = prop.GetValue(value);
if (val == null)
{
continue;
}
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetFormMetadata();
if (metadata == null || metadata.Name == null)
{
continue;
}
if (explode)
{
if (!form.ContainsKey(metadata.Name))
{
form[metadata.Name] = new List<string>();
}
if (Utilities.IsList(val))
{
foreach(var item in (IEnumerable)val)
{
form[metadata.Name].Add(Utilities.ValueToString(item));
}
}
else
{
form[metadata.Name].Add(Utilities.ValueToString(val));
}
}
else
{
if (Utilities.IsList(val))
{
foreach(var item in (IEnumerable)val)
{
items.Add($"{metadata.Name},{Utilities.ValueToString(item)}");
}
}
else
{
items.Add($"{metadata.Name},{Utilities.ValueToString(val)}");
}
}
}
if (items.Count > 0)
{
if (!form.ContainsKey(fieldName))
{
form[fieldName] = new List<string>();
}
form[fieldName].Add(string.Join(",", items));
}
}
}
else if (Utilities.IsDictionary(value))
{
var items = new List<string>();
foreach (var k in ((IDictionary)value).Keys)
{
var key = k?.ToString();
if (key == null)
{
continue;
}
if (explode)
{
if (!form.ContainsKey(key))
{
form[key] = new List<string>();
}
form[key].Add(
Utilities.ValueToString(((IDictionary)value)[key])
);
}
else
{
items.Add($"{key},{Utilities.ValueToString(((IDictionary)value)[key])}");
}
}
if (items.Count > 0)
{
if (!form.ContainsKey(fieldName))
{
form[fieldName] = new List<string>();
}
form[fieldName].Add(string.Join(",", items));
}
}
else if (Utilities.IsList(value))
{
var values = new List<string>();
var items = new List<string>();
foreach (var item in (IList)value)
{
if (explode)
{
values.Add(Utilities.ValueToString(item));
}
else
{
items.Add(Utilities.ValueToString(item));
}
}
if (items.Count > 0)
{
values.Add(string.Join(",", items));
}
foreach (var val in values)
{
if (!form.ContainsKey(fieldName))
{
form[fieldName] = new List<string>();
}
form[fieldName].Add(val);
}
}
else
{
if (!form.ContainsKey(fieldName))
{
form[fieldName] = new List<string>();
}
form[fieldName].Add(Utilities.ValueToString(value));
}
}
private static PropertyInfo? GetPropertyInfo(object value, string propertyName)
{
try
{
return value.GetType().GetProperty(propertyName);
}
catch (Exception)
{
return null;
}
}
}
}