diff --git a/src/Microsoft.OpenApi/Any/IOpenApiAny.cs b/src/Microsoft.OpenApi/Any/IOpenApiAny.cs new file mode 100644 index 000000000..1e99f7773 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/IOpenApiAny.cs @@ -0,0 +1,26 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public enum AnyTypeKind + { + None, + + Primitive, + + Null, + + Array, + + Object + } + + public interface IOpenApiAny + { + AnyTypeKind AnyKind { get; } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiArray.cs b/src/Microsoft.OpenApi/Any/OpenApiArray.cs new file mode 100644 index 000000000..6e7760e93 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiArray.cs @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace Microsoft.OpenApi +{ + public class OpenApiArray : List, IOpenApiAny + { + public AnyTypeKind AnyKind { get; } = AnyTypeKind.Array; + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiBinary.cs b/src/Microsoft.OpenApi/Any/OpenApiBinary.cs new file mode 100644 index 000000000..0abec2348 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiBinary.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiBinary : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Binary; + + public OpenApiBinary(byte[] value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiBoolean.cs b/src/Microsoft.OpenApi/Any/OpenApiBoolean.cs new file mode 100644 index 000000000..60331a222 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiBoolean.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiBoolean : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Boolean; + + public OpenApiBoolean(bool value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiByte.cs b/src/Microsoft.OpenApi/Any/OpenApiByte.cs new file mode 100644 index 000000000..14e51965c --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiByte.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiByte : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Byte; + + public OpenApiByte(byte value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiDate.cs b/src/Microsoft.OpenApi/Any/OpenApiDate.cs new file mode 100644 index 000000000..01a21d2a7 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiDate.cs @@ -0,0 +1,19 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +using System; + +namespace Microsoft.OpenApi +{ + public class OpenApiDate : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Date; + + public OpenApiDate(DateTime value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiDateTime.cs b/src/Microsoft.OpenApi/Any/OpenApiDateTime.cs new file mode 100644 index 000000000..f11d44be5 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiDateTime.cs @@ -0,0 +1,19 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +using System; + +namespace Microsoft.OpenApi +{ + public class OpenApiDateTime : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.DateTime; + + public OpenApiDateTime(DateTimeOffset value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiDouble.cs b/src/Microsoft.OpenApi/Any/OpenApiDouble.cs new file mode 100644 index 000000000..cb5323330 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiDouble.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiDouble : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Double; + + public OpenApiDouble(float value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiFloat.cs b/src/Microsoft.OpenApi/Any/OpenApiFloat.cs new file mode 100644 index 000000000..65102542e --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiFloat.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiFloat : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Float; + + public OpenApiFloat(float value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiInteger.cs b/src/Microsoft.OpenApi/Any/OpenApiInteger.cs new file mode 100644 index 000000000..285f741be --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiInteger.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiInteger : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Integer; + + public OpenApiInteger(int value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiLong.cs b/src/Microsoft.OpenApi/Any/OpenApiLong.cs new file mode 100644 index 000000000..9fc6aac59 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiLong.cs @@ -0,0 +1,18 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiLong : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Long; + + public OpenApiLong(long value) + : base(value) + { + } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiNull.cs b/src/Microsoft.OpenApi/Any/OpenApiNull.cs new file mode 100644 index 000000000..410f8ab9b --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiNull.cs @@ -0,0 +1,13 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiNull : IOpenApiAny + { + public AnyTypeKind AnyKind { get; } = AnyTypeKind.Null; + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiObject.cs b/src/Microsoft.OpenApi/Any/OpenApiObject.cs new file mode 100644 index 000000000..a673dc60e --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiObject.cs @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace Microsoft.OpenApi +{ + public class OpenApiObject : Dictionary, IOpenApiAny + { + public AnyTypeKind AnyKind { get; } = AnyTypeKind.Object; + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiPassword.cs b/src/Microsoft.OpenApi/Any/OpenApiPassword.cs new file mode 100644 index 000000000..e2c315dd6 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiPassword.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiPassword : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.Password; + + public OpenApiPassword(string value) + : base(value) + { } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiPrimitive.cs b/src/Microsoft.OpenApi/Any/OpenApiPrimitive.cs new file mode 100644 index 000000000..c85a6c1ad --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiPrimitive.cs @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public enum PrimitiveTypeKind + { + Integer, + Long, + Float, + Double, + String, + Byte, + Binary, + Boolean, + Date, + DateTime, + Password + } + + public abstract class OpenApiPrimitive : IOpenApiAny + { + public AnyTypeKind AnyKind { get; } = AnyTypeKind.Primitive; + + public abstract PrimitiveTypeKind PrimitiveKind { get; } + + public T Value { get; } + + public OpenApiPrimitive(T value) + { + Value = value; + } + } +} diff --git a/src/Microsoft.OpenApi/Any/OpenApiString.cs b/src/Microsoft.OpenApi/Any/OpenApiString.cs new file mode 100644 index 000000000..8f3c0fc34 --- /dev/null +++ b/src/Microsoft.OpenApi/Any/OpenApiString.cs @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------- +// +// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. +// +//--------------------------------------------------------------------- + +namespace Microsoft.OpenApi +{ + public class OpenApiString : OpenApiPrimitive + { + public override PrimitiveTypeKind PrimitiveKind { get; } = PrimitiveTypeKind.String; + + public OpenApiString(string value) + : base(value) + { } + } +}