Exemplo n.º 1
0
        public static string GetPrimitiveValue(IOpenApiAny value)
        {
            IOpenApiPrimitive primitive = (IOpenApiPrimitive)value;

            switch (primitive.PrimitiveType)
            {
            case PrimitiveType.String:
                OpenApiString stringValue = (OpenApiString)primitive;
                return(stringValue.Value);

            case PrimitiveType.Boolean:
                OpenApiBoolean booleanValue = (OpenApiBoolean)primitive;
                return(booleanValue.Value.ToString());

            case PrimitiveType.Integer:
                OpenApiInteger integerValue = (OpenApiInteger)primitive;
                return(integerValue.Value.ToString());

            case PrimitiveType.Long:
                OpenApiLong longValue = (OpenApiLong)primitive;
                return(longValue.Value.ToString());

            case PrimitiveType.Float:
                OpenApiFloat floatValue = (OpenApiFloat)primitive;
                return(floatValue.Value.ToString(CultureInfo.InvariantCulture));

            case PrimitiveType.Double:
                OpenApiDouble doubleValue = (OpenApiDouble)primitive;
                return(doubleValue.Value.ToString(CultureInfo.InvariantCulture));

            case PrimitiveType.Byte:
                OpenApiByte byteValue = (OpenApiByte)primitive;
                return(Encoding.Default.GetString(byteValue.Value));

            case PrimitiveType.Binary:
                OpenApiBinary binaryValue = (OpenApiBinary)primitive;
                StringBuilder builder     = new StringBuilder();
                foreach (byte byteVal in binaryValue.Value)
                {
                    builder.Append(Convert.ToString(byteVal, 2).PadLeft(8, '0'));
                }
                return(builder.ToString());

            case PrimitiveType.Date:
                OpenApiDate dateValue = (OpenApiDate)primitive;
                return(dateValue.Value.ToString(CultureInfo.InvariantCulture));

            case PrimitiveType.DateTime:
                OpenApiDateTime dateTimeValue = (OpenApiDateTime)primitive;
                return(dateTimeValue.Value.ToString(CultureInfo.InvariantCulture));

            case PrimitiveType.Password:
                OpenApiPassword passwordValue = (OpenApiPassword)primitive;
                return(passwordValue.Value);

            default:
                throw new NotImplementedException("This data example type is not supported yet!");
            }
        }
        public void WriteOpenApiDateTimeAsJsonWorks(string inputString)
        {
            // Arrange
            var input         = DateTimeOffset.Parse(inputString);
            var dateTimeValue = new OpenApiDateTime(input);

            var json = WriteAsJson(dateTimeValue);

            // Assert
            json.Should().Be(input.ToString("o"));
        }
Exemplo n.º 3
0
        public void WriteOpenApiDateTimeAsJsonWorks(string inputString, bool produceTerseOutput)
        {
            // Arrange
            var input         = DateTimeOffset.Parse(inputString, CultureInfo.InvariantCulture);
            var dateTimeValue = new OpenApiDateTime(input);

            var json         = WriteAsJson(dateTimeValue, produceTerseOutput);
            var expectedJson = "\"" + input.ToString("o") + "\"";

            // Assert
            json.Should().Be(expectedJson);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a new instance of <see cref="IOpenApiAny"/> based on the OpenAPI document format.
        /// </summary>
        /// <param name="instance">instance.</param>
        /// <param name="settings"><see cref="JsonSerializerSettings"/>settings.</param>
        /// <returns><see cref="IOpenApiAny"/> instance.</returns>
        public static IOpenApiAny CreateInstance <T>(T instance, JsonSerializerSettings settings)
        {
            Type type  = typeof(T);
            var  @enum = Type.GetTypeCode(type);
            var  openApiExampleValue = default(IOpenApiAny);

            switch (@enum)
            {
            case TypeCode.Int16:
                openApiExampleValue = new OpenApiInteger(Convert.ToInt16(instance));
                break;

            case TypeCode.Int32:
                openApiExampleValue = new OpenApiInteger(Convert.ToInt32(instance));
                break;

            case TypeCode.Int64:
                openApiExampleValue = new OpenApiLong(Convert.ToInt64(instance));
                break;

            case TypeCode.UInt16:
                openApiExampleValue = new OpenApiDouble(Convert.ToUInt16(instance));
                break;

            case TypeCode.UInt32:
                openApiExampleValue = new OpenApiDouble(Convert.ToUInt32(instance));
                break;

            case TypeCode.UInt64:
                openApiExampleValue = new OpenApiDouble(Convert.ToUInt64(instance));
                break;

            case TypeCode.Single:
                openApiExampleValue = new OpenApiFloat(Convert.ToSingle(instance));
                break;

            case TypeCode.Double:
                openApiExampleValue = new OpenApiDouble(Convert.ToDouble(instance));
                break;

            case TypeCode.Boolean:
                openApiExampleValue = new OpenApiBoolean(Convert.ToBoolean(instance));
                break;

            case TypeCode.String:
                openApiExampleValue = new OpenApiString(Convert.ToString(instance));
                break;

            case TypeCode.DateTime:
                openApiExampleValue = new OpenApiDateTime(Convert.ToDateTime(instance));
                break;

            case TypeCode.Object when type == typeof(DateTimeOffset):
                openApiExampleValue = new OpenApiDateTime((DateTimeOffset)(Convert.ChangeType(instance, type)));
                break;

            case TypeCode.Object when type == typeof(Guid):
                openApiExampleValue = new OpenApiString(Convert.ToString(instance));
                break;

            case TypeCode.Object when type == typeof(byte[]):
                openApiExampleValue = new OpenApiString(Convert.ToBase64String((byte[])Convert.ChangeType(instance, type)));
                break;

            case TypeCode.Object:
                openApiExampleValue = new OpenApiString(JsonConvert.SerializeObject(instance, settings));
                break;

            default:
                throw new InvalidOperationException("Invalid OpenAPI data Format");
            }

            return(openApiExampleValue);
        }