diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpTypeResolver.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpTypeResolver.cs index 5a39604c1..a38e866c7 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpTypeResolver.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpTypeResolver.cs @@ -88,7 +88,7 @@ public string Resolve(JsonSchema4 schema, bool isNullable, string typeNameHint, if (type.HasFlag(JsonObjectType.String) && !schema.ActualTypeSchema.IsEnumeration) return ResolveString(schema.ActualTypeSchema, isNullable, typeNameHint); - if (type.HasFlag(JsonObjectType.File)) + if (schema.IsBinary) return "byte[]"; // Type generating schemas diff --git a/src/NJsonSchema.CodeGeneration.CSharp/NJsonSchema.CodeGeneration.CSharp.csproj b/src/NJsonSchema.CodeGeneration.CSharp/NJsonSchema.CodeGeneration.CSharp.csproj index 9a9951a52..8e1e37ee4 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/NJsonSchema.CodeGeneration.CSharp.csproj +++ b/src/NJsonSchema.CodeGeneration.CSharp/NJsonSchema.CodeGeneration.CSharp.csproj @@ -2,7 +2,7 @@ netstandard1.3;netstandard2.0;net451 JSON Schema reader, generator and validator for .NET - 9.13.23 + 9.13.24 json schema validation generator .net Copyright © Rico Suter, 2018 https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md diff --git a/src/NJsonSchema.CodeGeneration.TypeScript/NJsonSchema.CodeGeneration.TypeScript.csproj b/src/NJsonSchema.CodeGeneration.TypeScript/NJsonSchema.CodeGeneration.TypeScript.csproj index 9dbe51e2e..f9766a8a7 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript/NJsonSchema.CodeGeneration.TypeScript.csproj +++ b/src/NJsonSchema.CodeGeneration.TypeScript/NJsonSchema.CodeGeneration.TypeScript.csproj @@ -2,7 +2,7 @@ netstandard1.3;netstandard2.0;net451 JSON Schema reader, generator and validator for .NET - 9.13.23 + 9.13.24 json schema validation generator .net Copyright © Rico Suter, 2018 https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md diff --git a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs index e9468bd57..4424501a0 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs @@ -103,7 +103,7 @@ private string Resolve(JsonSchema4 schema, string typeNameHint, bool addInterfac if (type.HasFlag(JsonObjectType.String) && !schema.ActualTypeSchema.IsEnumeration) return ResolveString(schema.ActualTypeSchema, typeNameHint); - if (type.HasFlag(JsonObjectType.File)) + if (schema.IsBinary) return "any"; // Type generating schemas diff --git a/src/NJsonSchema.CodeGeneration/NJsonSchema.CodeGeneration.csproj b/src/NJsonSchema.CodeGeneration/NJsonSchema.CodeGeneration.csproj index 527878918..cb631e9df 100644 --- a/src/NJsonSchema.CodeGeneration/NJsonSchema.CodeGeneration.csproj +++ b/src/NJsonSchema.CodeGeneration/NJsonSchema.CodeGeneration.csproj @@ -2,7 +2,7 @@ netstandard1.3;netstandard2.0;net451 JSON Schema reader, generator and validator for .NET - 9.13.23 + 9.13.24 json schema validation generator .net Copyright © Rico Suter, 2018 https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md diff --git a/src/NJsonSchema.Tests/Generation/PrimitiveTypeGenerationTests.cs b/src/NJsonSchema.Tests/Generation/PrimitiveTypeGenerationTests.cs index 034f4a2c8..b002fe099 100644 --- a/src/NJsonSchema.Tests/Generation/PrimitiveTypeGenerationTests.cs +++ b/src/NJsonSchema.Tests/Generation/PrimitiveTypeGenerationTests.cs @@ -27,6 +27,8 @@ public class Foo public OffsetDateTime OffsetDateTime { get; set; } + public Instant Instant { get; set; } + public Duration Duration { get; set; } } @@ -128,6 +130,20 @@ public async Task When_property_is_offsetdatetime_then_schema_type_is_string() Assert.Equal(JsonFormatStrings.DateTime, schema.Properties["OffsetDateTime"].Format); } + [Fact] + public async Task When_property_is_instant_then_schema_type_is_string() + { + //// Arrange + + + //// Act + var schema = await JsonSchema4.FromTypeAsync(); + + //// Assert + Assert.Equal(JsonObjectType.String, schema.Properties["Instant"].Type); + Assert.Equal(JsonFormatStrings.DateTime, schema.Properties["Instant"].Format); + } + [Fact] public async Task When_property_is_duration_then_schema_type_is_string() { diff --git a/src/NJsonSchema.Yaml/NJsonSchema.Yaml.csproj b/src/NJsonSchema.Yaml/NJsonSchema.Yaml.csproj index 2b6af2e84..ad46da1b5 100644 --- a/src/NJsonSchema.Yaml/NJsonSchema.Yaml.csproj +++ b/src/NJsonSchema.Yaml/NJsonSchema.Yaml.csproj @@ -2,7 +2,7 @@ netstandard1.3;netstandard2.0;net45 JSON Schema reader, generator and validator for .NET - 9.13.23 + 9.13.24 json schema validation generator .net Copyright © Rico Suter, 2018 https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md diff --git a/src/NJsonSchema/Generation/DefaultReflectionService.cs b/src/NJsonSchema/Generation/DefaultReflectionService.cs index 827a451e0..c16496f76 100644 --- a/src/NJsonSchema/Generation/DefaultReflectionService.cs +++ b/src/NJsonSchema/Generation/DefaultReflectionService.cs @@ -95,7 +95,8 @@ public virtual JsonTypeDescription GetDescription(Type type, IEnumerable parentAttribute return isValueType == false && settings.DefaultReferenceTypeNullHandling == ReferenceTypeNullHandling.Null; } - /// Checks whether the given type is a file type. + /// Checks whether the given type is a file/binary type. /// The type. /// The parent attributes. /// true or false. - protected virtual bool IsFileType(Type type, IEnumerable parentAttributes) + protected virtual bool IsBinary(Type type, IEnumerable parentAttributes) { // TODO: Move all file handling to NSwag. How? diff --git a/src/NJsonSchema/JsonFormatStrings.cs b/src/NJsonSchema/JsonFormatStrings.cs index 705102f70..59a71f969 100644 --- a/src/NJsonSchema/JsonFormatStrings.cs +++ b/src/NJsonSchema/JsonFormatStrings.cs @@ -60,6 +60,9 @@ public static class JsonFormatStrings /// Format for a byte if used with numeric type or for base64 encoded value otherwise. public const string Byte = "byte"; + + /// Format for a binary value. + public const string Binary = "binary"; /// Format for a hostname (DNS name). public const string Hostname = "hostname"; diff --git a/src/NJsonSchema/JsonSchema4.cs b/src/NJsonSchema/JsonSchema4.cs index 57f266974..f6ca032ec 100644 --- a/src/NJsonSchema/JsonSchema4.cs +++ b/src/NJsonSchema/JsonSchema4.cs @@ -202,6 +202,17 @@ internal static JsonSchema4 FromJsonWithoutReferenceHandling(string data) return schema; } + /// Gets a value indicating whether the schema is binary (file or binary format). + [JsonIgnore] + public bool IsBinary + { + get + { + return Type.HasFlag(JsonObjectType.File) || + (Type.HasFlag(JsonObjectType.String) && Format == JsonFormatStrings.Binary); + } + } + /// Gets the inherited/parent schema (most probable base schema in allOf). /// Used for code generation. [JsonIgnore] diff --git a/src/NJsonSchema/NJsonSchema.csproj b/src/NJsonSchema/NJsonSchema.csproj index 765bed8f8..1f798bff4 100644 --- a/src/NJsonSchema/NJsonSchema.csproj +++ b/src/NJsonSchema/NJsonSchema.csproj @@ -2,7 +2,7 @@ netstandard1.0;netstandard2.0;net40;net45 JSON Schema reader, generator and validator for .NET - 9.13.23 + 9.13.24 json schema validation generator .net Copyright © Rico Suter, 2018 https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md