/// <summary> /// Converts <see cref="OpenApiResponseWithBodyAttribute"/> to <see cref="OpenApiResponse"/>. /// </summary> /// <param name="attribute"><see cref="OpenApiResponseWithBodyAttribute"/> instance.</param> /// <param name="namingStrategy"><see cref="NamingStrategy"/> instance to create the JSON schema from .NET Types.</param> /// <returns><see cref="OpenApiResponse"/> instance.</returns> public static OpenApiResponse ToOpenApiResponse(this OpenApiResponseWithBodyAttribute attribute, NamingStrategy namingStrategy = null) { attribute.ThrowIfNullOrDefault(); var description = string.IsNullOrWhiteSpace(attribute.Description) ? $"Payload of {attribute.BodyType.GetOpenApiDescription()}" : attribute.Description; var mediaType = attribute.ToOpenApiMediaType <OpenApiResponseWithBodyAttribute>(namingStrategy); var content = new Dictionary <string, OpenApiMediaType>() { { attribute.ContentType, mediaType } }; var response = new OpenApiResponse() { Description = description, Content = content }; if (!string.IsNullOrWhiteSpace(attribute.Summary)) { var summary = new OpenApiString(attribute.Summary); response.Extensions.Add("x-ms-summary", summary); } return(response); }
/// <summary> /// Converts <see cref="OpenApiResponseWithBodyAttribute"/> to <see cref="OpenApiResponse"/>. /// </summary> /// <param name="attribute"><see cref="OpenApiResponseWithBodyAttribute"/> instance.</param> /// <param name="namingStrategy"><see cref="NamingStrategy"/> instance to create the JSON schema from .NET Types.</param> /// <param name="collection"><see cref="VisitorCollection"/> instance.</param> /// <param name="version">OpenAPI spec version.</param> /// <returns><see cref="OpenApiResponse"/> instance.</returns> public static OpenApiResponse ToOpenApiResponse(this OpenApiResponseWithBodyAttribute attribute, NamingStrategy namingStrategy = null, VisitorCollection collection = null, OpenApiVersionType version = OpenApiVersionType.V2) { attribute.ThrowIfNullOrDefault(); var description = string.IsNullOrWhiteSpace(attribute.Description) ? $"Payload of {attribute.BodyType.GetOpenApiDescription()}" : attribute.Description; var mediaType = attribute.ToOpenApiMediaType <OpenApiResponseWithBodyAttribute>(namingStrategy, collection, version); var content = new Dictionary <string, OpenApiMediaType>() { { attribute.ContentType, mediaType } }; var response = new OpenApiResponse() { Description = description, Content = content, }; if (attribute.CustomHeaderType.HasInterface <IOpenApiCustomResponseHeader>()) { var header = Activator.CreateInstance(attribute.CustomHeaderType) as IOpenApiCustomResponseHeader; response.Headers = header.Headers; } if (!string.IsNullOrWhiteSpace(attribute.Summary)) { var summary = new OpenApiString(attribute.Summary); response.Extensions.Add("x-ms-summary", summary); } return(response); }