diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.CreateGuard.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.CreateGuard.g.cs
index 05cf5af..cdeb281 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.CreateGuard.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.CreateGuard.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_CreateGuardSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_CreateGuardSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_CreateGuardSecurityRequirement0,
+ };
partial void PrepareCreateGuardArguments(
global::System.Net.Http.HttpClient httpClient,
global::Guardrails.Guard request);
@@ -40,9 +59,15 @@ partial void ProcessCreateGuardResponseContent(
httpClient: HttpClient,
request: request);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_CreateGuardSecurityRequirements,
+ operationName: "CreateGuardAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: "/guards",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Post,
@@ -52,7 +77,7 @@ partial void ProcessCreateGuardResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.DeleteGuard.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.DeleteGuard.g.cs
index 967abcd..f19f70c 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.DeleteGuard.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.DeleteGuard.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_DeleteGuardSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_DeleteGuardSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_DeleteGuardSecurityRequirement0,
+ };
partial void PrepareDeleteGuardArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName);
@@ -37,9 +56,15 @@ partial void ProcessDeleteGuardResponseContent(
httpClient: HttpClient,
guardName: ref guardName);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_DeleteGuardSecurityRequirements,
+ operationName: "DeleteGuardAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Delete,
@@ -49,7 +74,7 @@ partial void ProcessDeleteGuardResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuard.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuard.g.cs
index 20b6da8..5f9a012 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuard.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuard.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_GetGuardSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_GetGuardSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_GetGuardSecurityRequirement0,
+ };
partial void PrepareGetGuardArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName,
@@ -42,12 +61,18 @@ partial void ProcessGetGuardResponseContent(
guardName: ref guardName,
asOf: ref asOf);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_GetGuardSecurityRequirements,
+ operationName: "GetGuardAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}",
baseUri: HttpClient.BaseAddress);
__pathBuilder
.AddOptionalParameter("asOf", asOf?.ToString("yyyy-MM-ddTHH:mm:ssZ"))
- ;
+ ;
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Get,
@@ -57,7 +82,7 @@ partial void ProcessGetGuardResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuardHistory.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuardHistory.g.cs
index 6314afb..a85a92d 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuardHistory.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuardHistory.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_GetGuardHistorySecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_GetGuardHistorySecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_GetGuardHistorySecurityRequirement0,
+ };
partial void PrepareGetGuardHistoryArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName,
@@ -42,9 +61,15 @@ partial void ProcessGetGuardHistoryResponseContent(
guardName: ref guardName,
callId: ref callId);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_GetGuardHistorySecurityRequirements,
+ operationName: "GetGuardHistoryAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}/history/{callId}",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Get,
@@ -54,7 +79,7 @@ partial void ProcessGetGuardHistoryResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuards.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuards.g.cs
index 67b09ed..00ebb1c 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuards.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.GetGuards.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_GetGuardsSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_GetGuardsSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_GetGuardsSecurityRequirement0,
+ };
partial void PrepareGetGuardsArguments(
global::System.Net.Http.HttpClient httpClient);
partial void PrepareGetGuardsRequest(
@@ -32,9 +51,15 @@ partial void ProcessGetGuardsResponseContent(
PrepareGetGuardsArguments(
httpClient: HttpClient);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_GetGuardsSecurityRequirements,
+ operationName: "GetGuardsAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: "/guards",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Get,
@@ -44,7 +69,7 @@ partial void ProcessGetGuardsResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.UpdateGuard.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.UpdateGuard.g.cs
index b1a52dc..678c9f2 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.UpdateGuard.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.UpdateGuard.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class GuardClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_UpdateGuardSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_UpdateGuardSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_UpdateGuardSecurityRequirement0,
+ };
partial void PrepareUpdateGuardArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName,
@@ -45,9 +64,15 @@ partial void ProcessUpdateGuardResponseContent(
guardName: ref guardName,
request: request);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_UpdateGuardSecurityRequirements,
+ operationName: "UpdateGuardAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Put,
@@ -57,7 +82,7 @@ partial void ProcessUpdateGuardResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardClient.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardClient.g.cs
index 8414c0d..2f9eca8 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardClient.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardClient.g.cs
@@ -12,7 +12,7 @@ public sealed partial class GuardClient : global::Guardrails.IGuardClient, globa
///
/// Default self-hosted Guardrails server
///
- public const string DefaultBaseUrl = "http://localhost:8000";
+ public const string DefaultBaseUrl = "http://localhost:8000/";
private bool _disposeHttpClient = true;
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Authorizations.Bearer.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Authorizations.Bearer.g.cs
index bd96d32..b4c12e4 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Authorizations.Bearer.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Authorizations.Bearer.g.cs
@@ -5,13 +5,23 @@ namespace Guardrails
{
public sealed partial class GuardrailsClient
{
+
///
public void AuthorizeUsingBearer(
string apiKey)
{
apiKey = apiKey ?? throw new global::System.ArgumentNullException(nameof(apiKey));
- Authorizations.Clear();
+ for (var i = Authorizations.Count - 1; i >= 0; i--)
+ {
+ var __authorization = Authorizations[i];
+ if (__authorization.Type == "Http" &&
+ __authorization.Name == "Bearer")
+ {
+ Authorizations.RemoveAt(i);
+ }
+ }
+
Authorizations.Add(new global::Guardrails.EndPointAuthorization
{
Type = "Http",
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Constructors.Bearer.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Constructors.Bearer.g.cs
index 34fb8e1..44155a4 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Constructors.Bearer.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.Constructors.Bearer.g.cs
@@ -6,6 +6,7 @@ namespace Guardrails
public sealed partial class GuardrailsClient
{
///
+
public GuardrailsClient(
string apiKey,
global::System.Net.Http.HttpClient? httpClient = null,
diff --git a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.g.cs b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.g.cs
index 0cc3713..77e4d7d 100644
--- a/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.GuardrailsClient.g.cs
@@ -13,7 +13,7 @@ public sealed partial class GuardrailsClient : global::Guardrails.IGuardrailsCli
///
/// Default self-hosted Guardrails server
///
- public const string DefaultBaseUrl = "http://localhost:8000";
+ public const string DefaultBaseUrl = "http://localhost:8000/";
private bool _disposeHttpClient = true;
diff --git a/src/libs/Guardrails/Generated/Guardrails.IGuardrailsClient.Authorizations.Bearer.g.cs b/src/libs/Guardrails/Generated/Guardrails.IGuardrailsClient.Authorizations.Bearer.g.cs
index 13182fa..d4407ba 100644
--- a/src/libs/Guardrails/Generated/Guardrails.IGuardrailsClient.Authorizations.Bearer.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.IGuardrailsClient.Authorizations.Bearer.g.cs
@@ -9,6 +9,7 @@ public partial interface IGuardrailsClient
/// Authorize using bearer authentication.
///
///
+
public void AuthorizeUsingBearer(
string apiKey);
}
diff --git a/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.OpenaiChatCompletion.g.cs b/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.OpenaiChatCompletion.g.cs
index 80c15dc..de25581 100644
--- a/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.OpenaiChatCompletion.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.OpenaiChatCompletion.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class OpenaiClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_OpenaiChatCompletionSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_OpenaiChatCompletionSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_OpenaiChatCompletionSecurityRequirement0,
+ };
partial void PrepareOpenaiChatCompletionArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName,
@@ -45,9 +64,15 @@ partial void ProcessOpenaiChatCompletionResponseContent(
guardName: ref guardName,
request: request);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_OpenaiChatCompletionSecurityRequirements,
+ operationName: "OpenaiChatCompletionAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}/openai/v1/chat/completions",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Post,
@@ -57,7 +82,7 @@ partial void ProcessOpenaiChatCompletionResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.g.cs b/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.g.cs
index 0365f9a..f1dfd08 100644
--- a/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.OpenaiClient.g.cs
@@ -12,7 +12,7 @@ public sealed partial class OpenaiClient : global::Guardrails.IOpenaiClient, glo
///
/// Default self-hosted Guardrails server
///
- public const string DefaultBaseUrl = "http://localhost:8000";
+ public const string DefaultBaseUrl = "http://localhost:8000/";
private bool _disposeHttpClient = true;
diff --git a/src/libs/Guardrails/Generated/Guardrails.PathBuilder.g.cs b/src/libs/Guardrails/Generated/Guardrails.PathBuilder.g.cs
index 6c699be..7502e58 100644
--- a/src/libs/Guardrails/Generated/Guardrails.PathBuilder.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.PathBuilder.g.cs
@@ -224,6 +224,40 @@ public PathBuilder AddOptionalParameter(
return this;
}
+ ///
+ /// Adds a pre-serialized query string fragment to the URL.
+ ///
+ /// The serialized query string value.
+ /// The current instance.
+ public PathBuilder AddRawQueryString(
+ string value)
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ return this;
+ }
+
+ value = value.TrimStart('?', '&');
+ if (value.Length == 0)
+ {
+ return this;
+ }
+
+ if (_firstParameter)
+ {
+ _stringBuilder.Append('?');
+ _firstParameter = false;
+ }
+ else
+ {
+ _stringBuilder.Append('&');
+ }
+
+ _stringBuilder.Append(value);
+
+ return this;
+ }
+
///
/// Returns the constructed URL as a string.
///
diff --git a/src/libs/Guardrails/Generated/Guardrails.Security.g.cs b/src/libs/Guardrails/Generated/Guardrails.Security.g.cs
new file mode 100644
index 0000000..9f85b04
--- /dev/null
+++ b/src/libs/Guardrails/Generated/Guardrails.Security.g.cs
@@ -0,0 +1,145 @@
+#nullable enable
+
+namespace Guardrails
+{
+ internal sealed class EndPointAuthorizationRequirement
+ {
+ internal string Type { get; set; } = string.Empty;
+
+ internal string Location { get; set; } = string.Empty;
+
+ internal string Name { get; set; } = string.Empty;
+
+ internal string FriendlyName { get; set; } = string.Empty;
+ }
+
+ internal sealed class EndPointSecurityRequirement
+ {
+ internal global::System.Collections.Generic.IReadOnlyList Authorizations { get; set; } =
+ global::System.Array.Empty();
+ }
+
+ internal static class EndPointSecurityResolver
+ {
+ internal static global::System.Collections.Generic.List ResolveAuthorizations(
+ global::System.Collections.Generic.IReadOnlyList availableAuthorizations,
+ global::System.Collections.Generic.IReadOnlyList securityRequirements,
+ string operationName)
+ {
+ availableAuthorizations = availableAuthorizations ?? throw new global::System.ArgumentNullException(nameof(availableAuthorizations));
+ securityRequirements = securityRequirements ?? throw new global::System.ArgumentNullException(nameof(securityRequirements));
+ operationName = operationName ?? throw new global::System.ArgumentNullException(nameof(operationName));
+
+ if (securityRequirements.Count == 0)
+ {
+ return new global::System.Collections.Generic.List();
+ }
+
+ var allowsAnonymous = false;
+
+ foreach (var requirement in securityRequirements)
+ {
+ if (requirement.Authorizations.Count == 0)
+ {
+ allowsAnonymous = true;
+ continue;
+ }
+
+ var selected = new global::System.Collections.Generic.List(requirement.Authorizations.Count);
+ var satisfied = true;
+
+ foreach (var requiredAuthorization in requirement.Authorizations)
+ {
+ var found = false;
+
+ for (var i = 0; i < availableAuthorizations.Count; i++)
+ {
+ if (!Matches(availableAuthorizations[i], requiredAuthorization))
+ {
+ continue;
+ }
+
+ selected.Add(availableAuthorizations[i]);
+ found = true;
+ break;
+ }
+
+ if (!found)
+ {
+ satisfied = false;
+ break;
+ }
+ }
+
+ if (satisfied)
+ {
+ return selected;
+ }
+ }
+
+ if (allowsAnonymous)
+ {
+ return new global::System.Collections.Generic.List();
+ }
+
+ throw new global::System.InvalidOperationException(
+ $"Operation '{operationName}' requires one of the configured security alternatives: {DescribeRequirements(securityRequirements)}.");
+ }
+
+ private static bool Matches(
+ EndPointAuthorization availableAuthorization,
+ EndPointAuthorizationRequirement requiredAuthorization)
+ {
+ if (!string.Equals(availableAuthorization.Type, requiredAuthorization.Type, global::System.StringComparison.Ordinal))
+ {
+ return false;
+ }
+
+ return requiredAuthorization.Type switch
+ {
+ "OAuth2" => true,
+ "Http" => string.Equals(
+ availableAuthorization.Name,
+ requiredAuthorization.Name,
+ global::System.StringComparison.Ordinal),
+ "ApiKey" => string.Equals(
+ availableAuthorization.Location,
+ requiredAuthorization.Location,
+ global::System.StringComparison.Ordinal) &&
+ string.Equals(
+ availableAuthorization.Name,
+ requiredAuthorization.Name,
+ global::System.StringComparison.Ordinal),
+ _ => string.Equals(
+ availableAuthorization.Location,
+ requiredAuthorization.Location,
+ global::System.StringComparison.Ordinal) &&
+ string.Equals(
+ availableAuthorization.Name,
+ requiredAuthorization.Name,
+ global::System.StringComparison.Ordinal),
+ };
+ }
+
+ private static string DescribeRequirements(
+ global::System.Collections.Generic.IReadOnlyList securityRequirements)
+ {
+ var parts = new global::System.Collections.Generic.List(securityRequirements.Count);
+
+ foreach (var requirement in securityRequirements)
+ {
+ if (requirement.Authorizations.Count == 0)
+ {
+ parts.Add("anonymous");
+ continue;
+ }
+
+ parts.Add(string.Join(
+ " + ",
+ global::System.Linq.Enumerable.Select(requirement.Authorizations, static x => x.FriendlyName)));
+ }
+
+ return string.Join(" or ", parts);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.HealthCheck.g.cs b/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.HealthCheck.g.cs
index 40a26d7..8106873 100644
--- a/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.HealthCheck.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.HealthCheck.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class ServiceHealthClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_HealthCheckSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_HealthCheckSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_HealthCheckSecurityRequirement0,
+ };
partial void PrepareHealthCheckArguments(
global::System.Net.Http.HttpClient httpClient);
partial void PrepareHealthCheckRequest(
@@ -32,9 +51,15 @@ partial void ProcessHealthCheckResponseContent(
PrepareHealthCheckArguments(
httpClient: HttpClient);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_HealthCheckSecurityRequirements,
+ operationName: "HealthCheckAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: "/health-check",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Get,
@@ -44,7 +69,7 @@ partial void ProcessHealthCheckResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.g.cs b/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.g.cs
index e8d4bff..f7b9277 100644
--- a/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.ServiceHealthClient.g.cs
@@ -12,7 +12,7 @@ public sealed partial class ServiceHealthClient : global::Guardrails.IServiceHea
///
/// Default self-hosted Guardrails server
///
- public const string DefaultBaseUrl = "http://localhost:8000";
+ public const string DefaultBaseUrl = "http://localhost:8000/";
private bool _disposeHttpClient = true;
diff --git a/src/libs/Guardrails/Generated/Guardrails.ValidateClient.Validate.g.cs b/src/libs/Guardrails/Generated/Guardrails.ValidateClient.Validate.g.cs
index a4ab81f..4a9b951 100644
--- a/src/libs/Guardrails/Generated/Guardrails.ValidateClient.Validate.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.ValidateClient.Validate.g.cs
@@ -5,6 +5,25 @@ namespace Guardrails
{
public partial class ValidateClient
{
+
+
+ private static readonly global::Guardrails.EndPointSecurityRequirement s_ValidateSecurityRequirement0 =
+ new global::Guardrails.EndPointSecurityRequirement
+ {
+ Authorizations = new global::Guardrails.EndPointAuthorizationRequirement[]
+ { new global::Guardrails.EndPointAuthorizationRequirement
+ {
+ Type = "Http",
+ Location = "Header",
+ Name = "Bearer",
+ FriendlyName = "Bearer",
+ },
+ },
+ };
+ private static readonly global::Guardrails.EndPointSecurityRequirement[] s_ValidateSecurityRequirements =
+ new global::Guardrails.EndPointSecurityRequirement[]
+ { s_ValidateSecurityRequirement0,
+ };
partial void PrepareValidateArguments(
global::System.Net.Http.HttpClient httpClient,
ref string guardName,
@@ -50,9 +69,15 @@ partial void ProcessValidateResponseContent(
xOpenaiApiKey: ref xOpenaiApiKey,
request: request);
+
+ var __authorizations = global::Guardrails.EndPointSecurityResolver.ResolveAuthorizations(
+ availableAuthorizations: Authorizations,
+ securityRequirements: s_ValidateSecurityRequirements,
+ operationName: "ValidateAsync");
+
var __pathBuilder = new global::Guardrails.PathBuilder(
path: $"/guards/{guardName}/validate",
- baseUri: HttpClient.BaseAddress);
+ baseUri: HttpClient.BaseAddress);
var __path = __pathBuilder.ToString();
using var __httpRequest = new global::System.Net.Http.HttpRequestMessage(
method: global::System.Net.Http.HttpMethod.Post,
@@ -62,7 +87,7 @@ partial void ProcessValidateResponseContent(
__httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher;
#endif
- foreach (var __authorization in Authorizations)
+ foreach (var __authorization in __authorizations)
{
if (__authorization.Type == "Http" ||
__authorization.Type == "OAuth2")
diff --git a/src/libs/Guardrails/Generated/Guardrails.ValidateClient.g.cs b/src/libs/Guardrails/Generated/Guardrails.ValidateClient.g.cs
index 8088130..69e8fb0 100644
--- a/src/libs/Guardrails/Generated/Guardrails.ValidateClient.g.cs
+++ b/src/libs/Guardrails/Generated/Guardrails.ValidateClient.g.cs
@@ -12,7 +12,7 @@ public sealed partial class ValidateClient : global::Guardrails.IValidateClient,
///
/// Default self-hosted Guardrails server
///
- public const string DefaultBaseUrl = "http://localhost:8000";
+ public const string DefaultBaseUrl = "http://localhost:8000/";
private bool _disposeHttpClient = true;