mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-07 04:20:48 +00:00
ci: regenerated with OpenAPI Doc 0.0.3, Speakeasy CLI 1.129.1
This commit is contained in:
227
PlexAPI/Utils/SecuritySerializer.cs
Normal file
227
PlexAPI/Utils/SecuritySerializer.cs
Normal file
@@ -0,0 +1,227 @@
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Speakeasy (https://speakeasyapi.dev). 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 PlexAPI.Utils
|
||||
{
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
internal static class SecuritySerializer
|
||||
{
|
||||
public static ISpeakeasyHttpClient Apply(ISpeakeasyHttpClient client, object security)
|
||||
{
|
||||
if (security == null)
|
||||
{
|
||||
return client;
|
||||
}
|
||||
|
||||
client = new SpeakeasyHttpClient(client);
|
||||
|
||||
var props = security.GetType().GetProperties();
|
||||
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var value = prop.GetValue(security, null);
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetSecurityMetadata();
|
||||
if (metadata == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (metadata.Option)
|
||||
{
|
||||
ApplyOption(ref client, value);
|
||||
}
|
||||
else if (metadata.Scheme)
|
||||
{
|
||||
if (metadata.SubType == "basic" && !Utilities.IsClass(value))
|
||||
{
|
||||
ApplyScheme(ref client, metadata, security);
|
||||
return client;
|
||||
}
|
||||
else
|
||||
{
|
||||
ApplyScheme(ref client, metadata, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
private static void ApplyOption(ref ISpeakeasyHttpClient client, object option)
|
||||
{
|
||||
var props = option.GetType().GetProperties();
|
||||
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var value = prop.GetValue(option, null);
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetSecurityMetadata();
|
||||
if (metadata == null || !metadata.Scheme)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ApplyScheme(ref client, metadata, value);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplyScheme(
|
||||
ref ISpeakeasyHttpClient client,
|
||||
SpeakeasyMetadata.SecurityMetadata schemeMetadata,
|
||||
object scheme
|
||||
)
|
||||
{
|
||||
if (Utilities.IsClass(scheme))
|
||||
{
|
||||
if (schemeMetadata.Type == "http" && schemeMetadata.SubType == "basic")
|
||||
{
|
||||
ApplyBasicAuthScheme(ref client, scheme);
|
||||
return;
|
||||
}
|
||||
|
||||
var props = scheme.GetType().GetProperties();
|
||||
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var value = prop.GetValue(scheme, null);
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetSecurityMetadata();
|
||||
if (metadata == null || metadata.Name == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ApplySchemeValue(ref client, schemeMetadata, metadata, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ApplySchemeValue(ref client, schemeMetadata, schemeMetadata, scheme);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplySchemeValue(
|
||||
ref ISpeakeasyHttpClient client,
|
||||
SpeakeasyMetadata.SecurityMetadata schemeMetadata,
|
||||
SpeakeasyMetadata.SecurityMetadata valueMetadata,
|
||||
object value
|
||||
)
|
||||
{
|
||||
if (valueMetadata.Name == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (schemeMetadata.Type)
|
||||
{
|
||||
case "apiKey":
|
||||
switch (schemeMetadata.SubType)
|
||||
{
|
||||
case "header":
|
||||
client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value));
|
||||
break;
|
||||
case "query":
|
||||
client.AddQueryParam(
|
||||
valueMetadata.Name,
|
||||
Utilities.ValueToString(value)
|
||||
);
|
||||
break;
|
||||
case "cookie":
|
||||
client.AddHeader(
|
||||
"cookie",
|
||||
$"{valueMetadata.Name}={Utilities.ValueToString(value)}"
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new Exception(
|
||||
$"Unknown apiKey subType: {schemeMetadata.SubType}"
|
||||
);
|
||||
}
|
||||
break;
|
||||
case "openIdConnect":
|
||||
client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value));
|
||||
break;
|
||||
case "oauth2":
|
||||
client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value));
|
||||
break;
|
||||
case "http":
|
||||
switch (schemeMetadata.SubType)
|
||||
{
|
||||
case "bearer":
|
||||
client.AddHeader(
|
||||
valueMetadata.Name,
|
||||
Utilities.PrefixBearer(Utilities.ValueToString(value))
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new Exception($"Unknown http subType: {schemeMetadata.SubType}");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Exception($"Unknown security type: {schemeMetadata.Type}");
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplyBasicAuthScheme(ref ISpeakeasyHttpClient client, object scheme)
|
||||
{
|
||||
var props = scheme.GetType().GetProperties();
|
||||
|
||||
string username = "";
|
||||
string password = "";
|
||||
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var value = prop.GetValue(scheme, null);
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var metadata = prop.GetCustomAttribute<SpeakeasyMetadata>()?.GetSecurityMetadata();
|
||||
if (metadata == null || metadata.Name == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (metadata.Name == "username")
|
||||
{
|
||||
username = Utilities.ValueToString(value);
|
||||
}
|
||||
else if (metadata.Name == "password")
|
||||
{
|
||||
password = Utilities.ValueToString(value);
|
||||
}
|
||||
}
|
||||
|
||||
var auth = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}"));
|
||||
client.AddHeader("Authorization", $"Basic {auth}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user