Skip to content

Commit

Permalink
fix: Fixed issue with Block type.
Browse files Browse the repository at this point in the history
  • Loading branch information
HavenDV committed Oct 26, 2024
1 parent 0b56d38 commit b17a1d2
Show file tree
Hide file tree
Showing 20 changed files with 726 additions and 61 deletions.
23 changes: 22 additions & 1 deletion src/helpers/FixOpenApiSpec/Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.OpenApi;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Extensions;
using Microsoft.OpenApi.Readers;

Expand All @@ -7,7 +8,27 @@

var openApiDocument = new OpenApiStringReader().Read(jsonOrYaml, out var diagnostics);

openApiDocument.Components.Schemas["MessageStreamEvent"]!.Discriminator.Mapping["error"] = "#/components/schemas/ErrorEvent";
openApiDocument.Components.Schemas["TextBlock"].Properties["type"].Enum = new List<IOpenApiAny>
{
new OpenApiString("text"),
};
openApiDocument.Components.Schemas["ImageBlock"].Properties["type"].Enum = new List<IOpenApiAny>
{
new OpenApiString("image"),
};
openApiDocument.Components.Schemas["ToolUseBlock"]!.Properties["type"].Enum = new List<IOpenApiAny>
{
new OpenApiString("tool_use"),
};
openApiDocument.Components.Schemas["ToolResultBlock"]!.Properties["type"].Enum = new List<IOpenApiAny>
{
new OpenApiString("tool_result"),
};

openApiDocument.Components.Schemas["TextBlock"].Required.Add("type");
openApiDocument.Components.Schemas["ImageBlock"].Required.Add("type");
openApiDocument.Components.Schemas["ToolUseBlock"].Required.Add("type");
openApiDocument.Components.Schemas["ToolResultBlock"].Required.Add("type");

jsonOrYaml = openApiDocument.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);
_ = new OpenApiStringReader().Read(jsonOrYaml, out diagnostics);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ public sealed partial class ImageBlock
/// Default Value: image
/// </summary>
[global::System.Text.Json.Serialization.JsonPropertyName("type")]
public string? Type { get; set; }
[global::System.Text.Json.Serialization.JsonConverter(typeof(global::Anthropic.JsonConverters.ImageBlockTypeJsonConverter))]
public global::Anthropic.ImageBlockType Type { get; set; } = global::Anthropic.ImageBlockType.Image;

/// <summary>
/// The cache control settings.
Expand Down
46 changes: 46 additions & 0 deletions src/libs/Anthropic/Generated/Anthropic.Models.ImageBlockType.g.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#nullable enable

namespace Anthropic
{
/// <summary>
/// The type of content block.<br/>
/// Default Value: image
/// </summary>
public enum ImageBlockType
{
/// <summary>
///
/// </summary>
Image,
}

/// <summary>
/// Enum extensions to do fast conversions without the reflection.
/// </summary>
public static class ImageBlockTypeExtensions
{
/// <summary>
/// Converts an enum to a string.
/// </summary>
public static string ToValueString(this ImageBlockType value)
{
return value switch
{
ImageBlockType.Image => "image",
_ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
};
}
/// <summary>
/// Converts an string to a enum.
/// </summary>
public static ImageBlockType? ToEnum(string value)
{
return value switch
{
"image" => ImageBlockType.Image,
_ => null,
};
}
}
}
3 changes: 2 additions & 1 deletion src/libs/Anthropic/Generated/Anthropic.Models.TextBlock.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ public sealed partial class TextBlock
/// Default Value: text
/// </summary>
[global::System.Text.Json.Serialization.JsonPropertyName("type")]
public string? Type { get; set; }
[global::System.Text.Json.Serialization.JsonConverter(typeof(global::Anthropic.JsonConverters.TextBlockTypeJsonConverter))]
public global::Anthropic.TextBlockType Type { get; set; } = global::Anthropic.TextBlockType.Text;

/// <summary>
/// The cache control settings.
Expand Down
46 changes: 46 additions & 0 deletions src/libs/Anthropic/Generated/Anthropic.Models.TextBlockType.g.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#nullable enable

namespace Anthropic
{
/// <summary>
/// The type of content block.<br/>
/// Default Value: text
/// </summary>
public enum TextBlockType
{
/// <summary>
///
/// </summary>
Text,
}

/// <summary>
/// Enum extensions to do fast conversions without the reflection.
/// </summary>
public static class TextBlockTypeExtensions
{
/// <summary>
/// Converts an enum to a string.
/// </summary>
public static string ToValueString(this TextBlockType value)
{
return value switch
{
TextBlockType.Text => "text",
_ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
};
}
/// <summary>
/// Converts an string to a enum.
/// </summary>
public static TextBlockType? ToEnum(string value)
{
return value switch
{
"text" => TextBlockType.Text,
_ => null,
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ public sealed partial class ToolResultBlock
/// Default Value: tool_result
/// </summary>
[global::System.Text.Json.Serialization.JsonPropertyName("type")]
public string? Type { get; set; }
[global::System.Text.Json.Serialization.JsonConverter(typeof(global::Anthropic.JsonConverters.ToolResultBlockTypeJsonConverter))]
public global::Anthropic.ToolResultBlockType Type { get; set; } = global::Anthropic.ToolResultBlockType.ToolResult;

/// <summary>
/// The cache control settings.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#nullable enable

namespace Anthropic
{
/// <summary>
/// The type of content block.<br/>
/// Default Value: tool_result
/// </summary>
public enum ToolResultBlockType
{
/// <summary>
///
/// </summary>
ToolResult,
}

/// <summary>
/// Enum extensions to do fast conversions without the reflection.
/// </summary>
public static class ToolResultBlockTypeExtensions
{
/// <summary>
/// Converts an enum to a string.
/// </summary>
public static string ToValueString(this ToolResultBlockType value)
{
return value switch
{
ToolResultBlockType.ToolResult => "tool_result",
_ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
};
}
/// <summary>
/// Converts an string to a enum.
/// </summary>
public static ToolResultBlockType? ToEnum(string value)
{
return value switch
{
"tool_result" => ToolResultBlockType.ToolResult,
_ => null,
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ public sealed partial class ToolUseBlock
/// Default Value: tool_use
/// </summary>
[global::System.Text.Json.Serialization.JsonPropertyName("type")]
public string? Type { get; set; }
[global::System.Text.Json.Serialization.JsonConverter(typeof(global::Anthropic.JsonConverters.ToolUseBlockTypeJsonConverter))]
public global::Anthropic.ToolUseBlockType Type { get; set; } = global::Anthropic.ToolUseBlockType.ToolUse;

/// <summary>
/// The cache control settings.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#nullable enable

namespace Anthropic
{
/// <summary>
/// The type of content block.<br/>
/// Default Value: tool_use
/// </summary>
public enum ToolUseBlockType
{
/// <summary>
///
/// </summary>
ToolUse,
}

/// <summary>
/// Enum extensions to do fast conversions without the reflection.
/// </summary>
public static class ToolUseBlockTypeExtensions
{
/// <summary>
/// Converts an enum to a string.
/// </summary>
public static string ToValueString(this ToolUseBlockType value)
{
return value switch
{
ToolUseBlockType.ToolUse => "tool_use",
_ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null),
};
}
/// <summary>
/// Converts an string to a enum.
/// </summary>
public static ToolUseBlockType? ToEnum(string value)
{
return value switch
{
"tool_use" => ToolUseBlockType.ToolUse,
_ => null,
};
}
}
}
49 changes: 49 additions & 0 deletions src/libs/Anthropic/Generated/JsonConverters.ImageBlockType.g.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#nullable enable

namespace Anthropic.JsonConverters
{
/// <inheritdoc />
public sealed class ImageBlockTypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter<global::Anthropic.ImageBlockType>
{
/// <inheritdoc />
public override global::Anthropic.ImageBlockType Read(
ref global::System.Text.Json.Utf8JsonReader reader,
global::System.Type typeToConvert,
global::System.Text.Json.JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case global::System.Text.Json.JsonTokenType.String:
{
var stringValue = reader.GetString();
if (stringValue != null)
{
return global::Anthropic.ImageBlockTypeExtensions.ToEnum(stringValue) ?? default;
}

break;
}
case global::System.Text.Json.JsonTokenType.Number:
{
var numValue = reader.GetInt32();
return (global::Anthropic.ImageBlockType)numValue;
}
default:
throw new global::System.ArgumentOutOfRangeException(nameof(reader));
}

return default;
}

/// <inheritdoc />
public override void Write(
global::System.Text.Json.Utf8JsonWriter writer,
global::Anthropic.ImageBlockType value,
global::System.Text.Json.JsonSerializerOptions options)
{
writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));

writer.WriteStringValue(global::Anthropic.ImageBlockTypeExtensions.ToValueString(value));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#nullable enable

namespace Anthropic.JsonConverters
{
/// <inheritdoc />
public sealed class ImageBlockTypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter<global::Anthropic.ImageBlockType?>
{
/// <inheritdoc />
public override global::Anthropic.ImageBlockType? Read(
ref global::System.Text.Json.Utf8JsonReader reader,
global::System.Type typeToConvert,
global::System.Text.Json.JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case global::System.Text.Json.JsonTokenType.String:
{
var stringValue = reader.GetString();
if (stringValue != null)
{
return global::Anthropic.ImageBlockTypeExtensions.ToEnum(stringValue);
}

break;
}
case global::System.Text.Json.JsonTokenType.Number:
{
var numValue = reader.GetInt32();
return (global::Anthropic.ImageBlockType)numValue;
}
default:
throw new global::System.ArgumentOutOfRangeException(nameof(reader));
}

return default;
}

/// <inheritdoc />
public override void Write(
global::System.Text.Json.Utf8JsonWriter writer,
global::Anthropic.ImageBlockType? value,
global::System.Text.Json.JsonSerializerOptions options)
{
writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));

if (value == null)
{
writer.WriteNullValue();
}
else
{
writer.WriteStringValue(global::Anthropic.ImageBlockTypeExtensions.ToValueString(value.Value));
}
}
}
}
Loading

0 comments on commit b17a1d2

Please sign in to comment.