1- using System ;
2- using System . Text . Json ;
1+ using System . Text . Json ;
32using System . Text . Json . Serialization ;
43
5- namespace KoenZomers . Tado . Api . Converters
4+ namespace KoenZomers . Tado . Api . Converters ;
5+
6+ /// <summary>
7+ /// Converts the duration mode type returned by the Tado API to the DurationModes enumerator in this project
8+ /// </summary>
9+ public class DurationModeConverter : JsonConverter < Enums . DurationModes ? >
610{
7- /// <summary>
8- /// Converts the duration mode type returned by the Tado API to the DurationModes enumerator in this project
9- /// </summary>
10- public class DurationModeConverter : JsonConverter < Enums . DurationModes ? >
11+ public override Enums . DurationModes ? Read ( ref Utf8JsonReader reader , Type typeToConvert , JsonSerializerOptions options )
12+ {
13+ if ( reader . TokenType != JsonTokenType . String )
14+ {
15+ return null ;
16+ }
17+
18+ var enumString = reader . GetString ( ) ;
19+ if ( string . IsNullOrEmpty ( enumString ) )
20+ {
21+ return null ;
22+ }
23+
24+ return enumString switch
25+ {
26+ "MANUAL" => Enums . DurationModes . UntilNextManualChange ,
27+ "TADO_MODE" => Enums . DurationModes . UntilNextTimedEvent ,
28+ "TIMER" => Enums . DurationModes . Timer ,
29+ _ => null
30+ } ;
31+ }
32+
33+ public override void Write ( Utf8JsonWriter writer , Enums . DurationModes ? value , JsonSerializerOptions options )
1134 {
12- public override Enums . DurationModes ? Read ( ref Utf8JsonReader reader , Type typeToConvert , JsonSerializerOptions options )
35+ if ( value == null )
1336 {
14- if ( reader . TokenType != JsonTokenType . String )
15- {
16- return null ;
17- }
18-
19- var enumString = reader . GetString ( ) ;
20- if ( string . IsNullOrEmpty ( enumString ) )
21- {
22- return null ;
23- }
24-
25- return enumString switch
26- {
27- "MANUAL" => Enums . DurationModes . UntilNextManualChange ,
28- "TADO_MODE" => Enums . DurationModes . UntilNextTimedEvent ,
29- "TIMER" => Enums . DurationModes . Timer ,
30- _ => null
31- } ;
37+ writer . WriteNullValue ( ) ;
38+ return ;
3239 }
3340
34- public override void Write ( Utf8JsonWriter writer , Enums . DurationModes ? value , JsonSerializerOptions options )
41+ switch ( value )
3542 {
36- if ( value == null )
37- {
43+ case Enums . DurationModes . UntilNextManualChange :
44+ writer . WriteStringValue ( "MANUAL" ) ;
45+ break ;
46+
47+ case Enums . DurationModes . UntilNextTimedEvent :
48+ writer . WriteStringValue ( "TADO_MODE" ) ;
49+ break ;
50+
51+ case Enums . DurationModes . Timer :
52+ writer . WriteStringValue ( "TIMER" ) ;
53+ break ;
54+
55+ default :
3856 writer . WriteNullValue ( ) ;
39- return ;
40- }
41-
42- switch ( value )
43- {
44- case Enums . DurationModes . UntilNextManualChange :
45- writer . WriteStringValue ( "MANUAL" ) ;
46- break ;
47-
48- case Enums . DurationModes . UntilNextTimedEvent :
49- writer . WriteStringValue ( "TADO_MODE" ) ;
50- break ;
51-
52- case Enums . DurationModes . Timer :
53- writer . WriteStringValue ( "TIMER" ) ;
54- break ;
55-
56- default :
57- writer . WriteNullValue ( ) ;
58- break ;
59- }
57+ break ;
6058 }
6159 }
6260}
0 commit comments