Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace ModerationAPI
{
public readonly partial struct AnyOf<T1, T2>
public readonly partial struct AnyOf<T1, T2, T3>
{
/// <summary>
/// Serializes the current instance to a JSON string using the provided JsonSerializerContext.
Expand Down Expand Up @@ -34,14 +34,14 @@ public string ToJson(
/// <summary>
/// Deserializes a JSON string using the provided JsonSerializerContext.
/// </summary>
public static global::ModerationAPI.AnyOf<T1, T2>? FromJson(
public static global::ModerationAPI.AnyOf<T1, T2, T3>? FromJson(
string json,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return global::System.Text.Json.JsonSerializer.Deserialize(
json,
typeof(global::ModerationAPI.AnyOf<T1, T2>),
jsonSerializerContext) as global::ModerationAPI.AnyOf<T1, T2>?;
typeof(global::ModerationAPI.AnyOf<T1, T2, T3>),
jsonSerializerContext) as global::ModerationAPI.AnyOf<T1, T2, T3>?;
}

/// <summary>
Expand All @@ -51,26 +51,26 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::ModerationAPI.AnyOf<T1, T2>? FromJson(
public static global::ModerationAPI.AnyOf<T1, T2, T3>? FromJson(
string json,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.Deserialize<global::ModerationAPI.AnyOf<T1, T2>>(
return global::System.Text.Json.JsonSerializer.Deserialize<global::ModerationAPI.AnyOf<T1, T2, T3>>(
json,
jsonSerializerOptions);
}

/// <summary>
/// Deserializes a JSON stream using the provided JsonSerializerContext.
/// </summary>
public static async global::System.Threading.Tasks.ValueTask<global::ModerationAPI.AnyOf<T1, T2>?> FromJsonStreamAsync(
public static async global::System.Threading.Tasks.ValueTask<global::ModerationAPI.AnyOf<T1, T2, T3>?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return (await global::System.Text.Json.JsonSerializer.DeserializeAsync(
jsonStream,
typeof(global::ModerationAPI.AnyOf<T1, T2>),
jsonSerializerContext).ConfigureAwait(false)) as global::ModerationAPI.AnyOf<T1, T2>?;
typeof(global::ModerationAPI.AnyOf<T1, T2, T3>),
jsonSerializerContext).ConfigureAwait(false)) as global::ModerationAPI.AnyOf<T1, T2, T3>?;
}

/// <summary>
Expand All @@ -80,11 +80,11 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::System.Threading.Tasks.ValueTask<global::ModerationAPI.AnyOf<T1, T2>?> FromJsonStreamAsync(
public static global::System.Threading.Tasks.ValueTask<global::ModerationAPI.AnyOf<T1, T2, T3>?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::ModerationAPI.AnyOf<T1, T2>?>(
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::ModerationAPI.AnyOf<T1, T2, T3>?>(
jsonStream,
jsonSerializerOptions);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace ModerationAPI
/// <summary>
///
/// </summary>
public readonly partial struct AnyOf<T1, T2> : global::System.IEquatable<AnyOf<T1, T2>>
public readonly partial struct AnyOf<T1, T2, T3> : global::System.IEquatable<AnyOf<T1, T2, T3>>
{
/// <summary>
///
Expand Down Expand Up @@ -41,15 +41,32 @@ namespace ModerationAPI
[global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value2))]
#endif
public bool IsValue2 => Value2 != null;

/// <summary>
///
/// </summary>
#if NET6_0_OR_GREATER
public T3? Value3 { get; init; }
#else
public T3? Value3 { get; }
#endif

/// <summary>
///
/// </summary>
public static implicit operator AnyOf<T1, T2>(T1 value) => new AnyOf<T1, T2>((T1?)value);
#if NET6_0_OR_GREATER
[global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Value3))]
#endif
public bool IsValue3 => Value3 != null;
/// <summary>
///
/// </summary>
public static implicit operator AnyOf<T1, T2, T3>(T1 value) => new AnyOf<T1, T2, T3>((T1?)value);

/// <summary>
///
/// </summary>
public static implicit operator T1?(AnyOf<T1, T2> @this) => @this.Value1;
public static implicit operator T1?(AnyOf<T1, T2, T3> @this) => @this.Value1;

/// <summary>
///
Expand All @@ -62,12 +79,12 @@ public AnyOf(T1? value)
/// <summary>
///
/// </summary>
public static implicit operator AnyOf<T1, T2>(T2 value) => new AnyOf<T1, T2>((T2?)value);
public static implicit operator AnyOf<T1, T2, T3>(T2 value) => new AnyOf<T1, T2, T3>((T2?)value);

/// <summary>
///
/// </summary>
public static implicit operator T2?(AnyOf<T1, T2> @this) => @this.Value2;
public static implicit operator T2?(AnyOf<T1, T2, T3> @this) => @this.Value2;

/// <summary>
///
Expand All @@ -77,22 +94,43 @@ public AnyOf(T2? value)
Value2 = value;
}

/// <summary>
///
/// </summary>
public static implicit operator AnyOf<T1, T2, T3>(T3 value) => new AnyOf<T1, T2, T3>((T3?)value);

/// <summary>
///
/// </summary>
public static implicit operator T3?(AnyOf<T1, T2, T3> @this) => @this.Value3;

/// <summary>
///
/// </summary>
public AnyOf(T3? value)
{
Value3 = value;
}

/// <summary>
///
/// </summary>
public AnyOf(
T1? value1,
T2? value2
T2? value2,
T3? value3
)
{
Value1 = value1;
Value2 = value2;
Value3 = value3;
}

/// <summary>
///
/// </summary>
public object? Object =>
Value3 as object ??
Value2 as object ??
Value1 as object
;
Expand All @@ -102,15 +140,16 @@ Value1 as object
/// </summary>
public override string? ToString() =>
Value1?.ToString() ??
Value2?.ToString()
Value2?.ToString() ??
Value3?.ToString()
;

/// <summary>
///
/// </summary>
public bool Validate()
{
return IsValue1 || IsValue2;
return IsValue1 || IsValue2 || IsValue3;
}

/// <summary>
Expand All @@ -119,6 +158,7 @@ public bool Validate()
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
global::System.Func<T3, TResult>? value3 = null,
bool validate = true)
{
if (validate)
Expand All @@ -134,6 +174,10 @@ public bool Validate()
{
return value2(Value2!);
}
else if (IsValue3 && value3 != null)
{
return value3(Value3!);
}

return default(TResult);
}
Expand All @@ -144,6 +188,7 @@ public bool Validate()
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
global::System.Action<T3>? value3 = null,
bool validate = true)
{
if (validate)
Expand All @@ -159,6 +204,10 @@ public void Match(
{
value2?.Invoke(Value2!);
}
else if (IsValue3)
{
value3?.Invoke(Value3!);
}
}

/// <summary>
Expand All @@ -172,6 +221,8 @@ public override int GetHashCode()
typeof(T1),
Value2,
typeof(T2),
Value3,
typeof(T3),
};
const int offset = unchecked((int)2166136261);
const int prime = 16777619;
Expand All @@ -185,26 +236,27 @@ static int HashCodeAggregator(int hashCode, object? value) => value == null
/// <summary>
///
/// </summary>
public bool Equals(AnyOf<T1, T2> other)
public bool Equals(AnyOf<T1, T2, T3> other)
{
return
global::System.Collections.Generic.EqualityComparer<T1?>.Default.Equals(Value1, other.Value1) &&
global::System.Collections.Generic.EqualityComparer<T2?>.Default.Equals(Value2, other.Value2)
global::System.Collections.Generic.EqualityComparer<T2?>.Default.Equals(Value2, other.Value2) &&
global::System.Collections.Generic.EqualityComparer<T3?>.Default.Equals(Value3, other.Value3)
;
}

/// <summary>
///
/// </summary>
public static bool operator ==(AnyOf<T1, T2> obj1, AnyOf<T1, T2> obj2)
public static bool operator ==(AnyOf<T1, T2, T3> obj1, AnyOf<T1, T2, T3> obj2)
{
return global::System.Collections.Generic.EqualityComparer<AnyOf<T1, T2>>.Default.Equals(obj1, obj2);
return global::System.Collections.Generic.EqualityComparer<AnyOf<T1, T2, T3>>.Default.Equals(obj1, obj2);
}

/// <summary>
///
/// </summary>
public static bool operator !=(AnyOf<T1, T2> obj1, AnyOf<T1, T2> obj2)
public static bool operator !=(AnyOf<T1, T2, T3> obj1, AnyOf<T1, T2, T3> obj2)
{
return !(obj1 == obj2);
}
Expand All @@ -214,7 +266,7 @@ public bool Equals(AnyOf<T1, T2> other)
/// </summary>
public override bool Equals(object? obj)
{
return obj is AnyOf<T1, T2> o && Equals(o);
return obj is AnyOf<T1, T2, T3> o && Equals(o);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ public partial interface IModerationAPIClient
/// <param name="content">
/// The content sent for moderation
/// </param>
/// <param name="timestamp">
/// Unix timestamp (in milliseconds) of when the content was created. Use if content is not submitted in real-time.
/// </param>
/// <param name="channel">
/// Provide a channel ID or key. Will use the project's default channel if not provided.
/// </param>
Expand Down Expand Up @@ -55,15 +58,16 @@ public partial interface IModerationAPIClient
/// <param name="cancellationToken">The token to cancel the operation with</param>
/// <exception cref="global::System.InvalidOperationException"></exception>
global::System.Threading.Tasks.Task<global::ModerationAPI.NewModerateModerateResponse> NewModerateModerateAsync(
global::ModerationAPI.OneOf<global::ModerationAPI.OneOf<global::ModerationAPI.NewModerateModerateRequestContentContentLeafText, global::ModerationAPI.NewModerateModerateRequestContentContentLeafImage, global::ModerationAPI.NewModerateModerateRequestContentContentLeafVideo, global::ModerationAPI.NewModerateModerateRequestContentContentLeafAudio>?, global::ModerationAPI.NewModerateModerateRequestContentObject> content,
global::ModerationAPI.OneOf<global::ModerationAPI.NewModerateModerateRequestContentText, global::ModerationAPI.NewModerateModerateRequestContentImage, global::ModerationAPI.NewModerateModerateRequestContentVideo, global::ModerationAPI.NewModerateModerateRequestContentAudio, global::ModerationAPI.NewModerateModerateRequestContentObject> content,
double? timestamp = default,
string? channel = default,
string? contentId = default,
global::ModerationAPI.NewModerateModerateRequestMetaType? metaType = default,
string? authorId = default,
string? conversationId = default,
object? metadata = default,
bool? doNotStore = default,
global::System.Collections.Generic.IList<global::ModerationAPI.OneOf<global::ModerationAPI.NewModerateModerateRequestPolicieToxicity, global::ModerationAPI.NewModerateModerateRequestPoliciePersonalInformation, global::ModerationAPI.NewModerateModerateRequestPolicieToxicitySevere, global::ModerationAPI.NewModerateModerateRequestPolicieHate, global::ModerationAPI.NewModerateModerateRequestPolicieIllicit, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitDrugs, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitAlcohol, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitFirearms, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitTobacco, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitGambling, global::ModerationAPI.NewModerateModerateRequestPolicieSexual, global::ModerationAPI.NewModerateModerateRequestPolicieFlirtation, global::ModerationAPI.NewModerateModerateRequestPolicieProfanity, global::ModerationAPI.NewModerateModerateRequestPolicieViolence, global::ModerationAPI.NewModerateModerateRequestPolicieSelfHarm, global::ModerationAPI.NewModerateModerateRequestPolicieSpam, global::ModerationAPI.NewModerateModerateRequestPolicieSelfPromotion, global::ModerationAPI.NewModerateModerateRequestPoliciePolitical, global::ModerationAPI.NewModerateModerateRequestPolicieReligion, global::ModerationAPI.NewModerateModerateRequestPolicieCodeAbuse, global::ModerationAPI.NewModerateModerateRequestPoliciePiiMasking, global::ModerationAPI.NewModerateModerateRequestPolicieUrlMasking, global::ModerationAPI.NewModerateModerateRequestPolicieGuideline>>? policies = default,
global::System.Collections.Generic.IList<global::ModerationAPI.OneOf<global::ModerationAPI.NewModerateModerateRequestPolicieToxicity, global::ModerationAPI.NewModerateModerateRequestPoliciePersonalInformation, global::ModerationAPI.NewModerateModerateRequestPolicieToxicitySevere, global::ModerationAPI.NewModerateModerateRequestPolicieHate, global::ModerationAPI.NewModerateModerateRequestPolicieIllicit, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitDrugs, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitAlcohol, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitFirearms, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitTobacco, global::ModerationAPI.NewModerateModerateRequestPolicieIllicitGambling, global::ModerationAPI.NewModerateModerateRequestPolicieCannabis, global::ModerationAPI.NewModerateModerateRequestPolicieAdult, global::ModerationAPI.NewModerateModerateRequestPolicieCrypto, global::ModerationAPI.NewModerateModerateRequestPolicieSexual, global::ModerationAPI.NewModerateModerateRequestPolicieFlirtation, global::ModerationAPI.NewModerateModerateRequestPolicieProfanity, global::ModerationAPI.NewModerateModerateRequestPolicieViolence, global::ModerationAPI.NewModerateModerateRequestPolicieSelfHarm, global::ModerationAPI.NewModerateModerateRequestPolicieSpam, global::ModerationAPI.NewModerateModerateRequestPolicieSelfPromotion, global::ModerationAPI.NewModerateModerateRequestPoliciePolitical, global::ModerationAPI.NewModerateModerateRequestPolicieReligion, global::ModerationAPI.NewModerateModerateRequestPolicieCodeAbuse, global::ModerationAPI.NewModerateModerateRequestPoliciePiiMasking, global::ModerationAPI.NewModerateModerateRequestPolicieUrlMasking, global::ModerationAPI.NewModerateModerateRequestPolicieGuideline>>? policies = default,
global::System.Threading.CancellationToken cancellationToken = default);
}
}
Loading
Loading