-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFeatureNames.cs
More file actions
69 lines (53 loc) · 2.99 KB
/
FeatureNames.cs
File metadata and controls
69 lines (53 loc) · 2.99 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System.Reflection;
namespace CasCap.Models;
/// <summary>
/// Well-known feature name constants for <see cref="CasCap.Common.Abstractions.IBgFeature.FeatureName"/>
/// and <see cref="FeatureConfig.EnabledFeatures"/>.
/// </summary>
/// <remarks>
/// Use these constants instead of string literals so that a feature rename is a
/// single point of change. Feature libraries declare their own <c>FeatureName</c>
/// strings; this class is for consumers (composition root, tests, XML docs).
/// </remarks>
public static class FeatureNames
{
/// <summary>
/// Case-insensitive set of all valid feature names derived from the <c>const string</c>
/// fields on this class. Used by <see cref="FeatureConfig.GetEnabledFeatures"/> to
/// reject unrecognised values at startup.
/// </summary>
public static readonly IReadOnlySet<string> ValidNames =
typeof(FeatureNames)
.GetFields(BindingFlags.Public | BindingFlags.Static)
.Where(f => f.IsLiteral && f.FieldType == typeof(string))
.Select(f => (string)f.GetRawConstantValue()!)
.ToHashSet(StringComparer.OrdinalIgnoreCase);
/// <summary>Fronius solar inverter integration.</summary>
public const string Fronius = nameof(Fronius);
/// <summary>Buderus heating system integration.</summary>
public const string Buderus = nameof(Buderus);
/// <summary>KNX home automation integration.</summary>
public const string Knx = nameof(Knx);
/// <summary>DoorBird video doorbell integration.</summary>
public const string DoorBird = nameof(DoorBird);
/// <summary>Edge hardware monitoring — GPU telemetry, CPU temperature, and Raspberry Pi GPIO sensors.</summary>
public const string EdgeHardware = nameof(EdgeHardware);
/// <summary>Sicce aquarium pump integration.</summary>
public const string Sicce = nameof(Sicce);
/// <summary>Miele appliance integration.</summary>
public const string Miele = nameof(Miele);
/// <summary>Wiz smart lighting integration.</summary>
public const string Wiz = nameof(Wiz);
/// <summary>Dynamic DNS service.</summary>
public const string DDns = nameof(DDns);
/// <summary>Ubiquiti network device integration.</summary>
public const string Ubiquiti = nameof(Ubiquiti);
/// <summary>Shelly smart plug integration.</summary>
public const string Shelly = nameof(Shelly);
/// <summary>Consolidated SignalR hub server, providing a single real-time event endpoint for all features.</summary>
public const string SignalRHub = nameof(SignalRHub);
/// <summary>Single-instance communications and media analysis service — consumes key events and binary media from Redis Streams, routes media to domain agents, and relays notifications via Signal messenger.</summary>
public const string Comms = nameof(Comms);
/// <summary>Lightweight feature name used by integration tests to boot the application without activating any hardware features.</summary>
public const string Test = nameof(Test);
}