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")); }
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); }
/// <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); }