/
OpenApiDataTypes.cs
30 lines (26 loc) · 1.12 KB
/
OpenApiDataTypes.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.Reflection;
namespace Qowaiv.OpenApi;
/// <summary>Creates <see cref="OpenApiDataType"/>s.</summary>
public static class OpenApiDataTypes
{
/// <summary>Gets all <see cref="OpenApiDataTypeAttribute"/>s specified in the assemblies.</summary>
[Pure]
public static IEnumerable<OpenApiDataType> FromAssemblies(params Assembly[] assemblies)
=> FromTypes(Guard.NotNull(assemblies)
.SelectMany(assembly => assembly.GetExportedTypes()));
/// <summary>Gets all <see cref="OpenApiDataTypeAttribute"/>s of the
/// specified types that are decorated as such.
/// </summary>
[ExcludeFromCodeCoverage]
[Pure]
public static IEnumerable<OpenApiDataType> FromTypes(params Type[] types)
=> FromTypes(types?.AsEnumerable() ?? []);
/// <summary>Gets all <see cref="OpenApiDataTypeAttribute"/>s of the
/// specified types that are decorated as such.
/// </summary>
[Pure]
public static IEnumerable<OpenApiDataType> FromTypes(IEnumerable<Type> types)
=> Guard.NotNull(types)
.Select(OpenApiDataType.FromType)
.Where(data => data is { })!;
}