1
1
using System ;
2
2
using JsonLogic . Net ;
3
- using Microsoft . Extensions . Logging ;
4
- using Microsoft . Extensions . Logging . Abstractions ;
5
3
using Newtonsoft . Json . Linq ;
6
4
using Semver ;
7
5
@@ -10,23 +8,10 @@ namespace OpenFeature.Contrib.Providers.Flagd.Resolver.InProcess.CustomEvaluator
10
8
/// <inheritdoc/>
11
9
public class SemVerEvaluator
12
10
{
13
- internal ILogger Logger { get ; set ; }
14
-
15
11
internal SemVerEvaluator ( )
16
12
{
17
- var loggerFactory = LoggerFactory . Create (
18
- builder => builder
19
- // add console as logging target
20
- . AddConsole ( )
21
- // add debug output as logging target
22
- . AddDebug ( )
23
- // set minimum level to log
24
- . SetMinimumLevel ( LogLevel . Debug )
25
- ) ;
26
- Logger = loggerFactory . CreateLogger < SemVerEvaluator > ( ) ;
27
13
}
28
14
29
-
30
15
const string OperatorEqual = "=" ;
31
16
const string OperatorNotEqual = "!=" ;
32
17
const string OperatorLess = "<" ;
@@ -53,37 +38,32 @@ internal object Evaluate(IProcessJsonLogic p, JToken[] args, object data)
53
38
var targetVersionString = p . Apply ( args [ 2 ] , data ) . ToString ( ) ;
54
39
55
40
//convert to semantic versions
56
- try
41
+ if ( ! SemVersion . TryParse ( versionString , SemVersionStyles . Strict , out var version ) ||
42
+ ! SemVersion . TryParse ( targetVersionString , SemVersionStyles . Strict , out var targetVersion ) )
57
43
{
58
- var version = SemVersion . Parse ( versionString , SemVersionStyles . Strict ) ;
59
- var targetVersion = SemVersion . Parse ( targetVersionString , SemVersionStyles . Strict ) ;
60
-
61
- switch ( semVerOperator )
62
- {
63
- case OperatorEqual :
64
- return version . CompareSortOrderTo ( targetVersion ) == 0 ;
65
- case OperatorNotEqual :
66
- return version . CompareSortOrderTo ( targetVersion ) != 0 ;
67
- case OperatorLess :
68
- return version . CompareSortOrderTo ( targetVersion ) < 0 ;
69
- case OperatorLessOrEqual :
70
- return version . CompareSortOrderTo ( targetVersion ) <= 0 ;
71
- case OperatorGreater :
72
- return version . CompareSortOrderTo ( targetVersion ) > 0 ;
73
- case OperatorGreaterOrEqual :
74
- return version . CompareSortOrderTo ( targetVersion ) >= 0 ;
75
- case OperatorMatchMajor :
76
- return version . Major == targetVersion . Major ;
77
- case OperatorMatchMinor :
78
- return version . Major == targetVersion . Major && version . Minor == targetVersion . Minor ;
79
- default :
80
- return false ;
81
- }
44
+ return false ;
82
45
}
83
- catch ( Exception e )
46
+
47
+ switch ( semVerOperator )
84
48
{
85
- Logger ? . LogDebug ( "Exception during SemVer evaluation: " + e . Message ) ;
86
- return false ;
49
+ case OperatorEqual :
50
+ return version . CompareSortOrderTo ( targetVersion ) == 0 ;
51
+ case OperatorNotEqual :
52
+ return version . CompareSortOrderTo ( targetVersion ) != 0 ;
53
+ case OperatorLess :
54
+ return version . CompareSortOrderTo ( targetVersion ) < 0 ;
55
+ case OperatorLessOrEqual :
56
+ return version . CompareSortOrderTo ( targetVersion ) <= 0 ;
57
+ case OperatorGreater :
58
+ return version . CompareSortOrderTo ( targetVersion ) > 0 ;
59
+ case OperatorGreaterOrEqual :
60
+ return version . CompareSortOrderTo ( targetVersion ) >= 0 ;
61
+ case OperatorMatchMajor :
62
+ return version . Major == targetVersion . Major ;
63
+ case OperatorMatchMinor :
64
+ return version . Major == targetVersion . Major && version . Minor == targetVersion . Minor ;
65
+ default :
66
+ return false ;
87
67
}
88
68
}
89
69
}
0 commit comments