@@ -49,47 +49,27 @@ public FeatureFlagFileStorageService(
4949 public async Task < FeatureFlags > GetAsync ( )
5050 {
5151 using ( var stream = await _storage . GetFileAsync ( CoreConstants . Folders . ContentFolderName , CoreConstants . FeatureFlagsFileName ) )
52- using ( var streamReader = new StreamReader ( stream ) )
53- using ( var reader = new JsonTextReader ( streamReader ) )
5452 {
55- return Serializer . Deserialize < FeatureFlags > ( reader ) ;
53+ return ReadFeatureFlagsFromStream ( stream ) ;
5654 }
5755 }
5856
5957 public async Task < FeatureFlagReference > GetReferenceAsync ( )
6058 {
6159 var reference = await _storage . GetFileReferenceAsync ( CoreConstants . Folders . ContentFolderName , CoreConstants . FeatureFlagsFileName ) ;
6260
63- string json ;
64- using ( var stream = reference . OpenRead ( ) )
65- using ( var streamReader = new StreamReader ( stream ) )
66- {
67- json = await streamReader . ReadToEndAsync ( ) ;
68- }
69-
7061 return new FeatureFlagReference (
71- PrettifyJson ( json ) ,
62+ ReadFeatureFlagsFromStream ( reference . OpenRead ( ) ) ,
7263 reference . ContentId ) ;
7364 }
7465
75- public async Task < FeatureFlagSaveResult > TrySaveAsync ( string flagsJson , string contentId )
66+ private FeatureFlags ReadFeatureFlagsFromStream ( Stream stream )
7667 {
77- // Ensure the feature flags are valid before saving them.
78- FeatureFlags flags ;
79- try
80- {
81- using ( var reader = new StringReader ( flagsJson ) )
82- using ( var jsonReader = new JsonTextReader ( reader ) )
83- {
84- flags = Serializer . Deserialize < FeatureFlags > ( jsonReader ) ;
85- }
86- }
87- catch ( JsonException e )
68+ using ( var streamReader = new StreamReader ( stream ) )
69+ using ( var reader = new JsonTextReader ( streamReader ) )
8870 {
89- return FeatureFlagSaveResult . Invalid ( e . Message ) ;
71+ return Serializer . Deserialize < FeatureFlags > ( reader ) ;
9072 }
91-
92- return await TrySaveAsync ( flags , contentId ) ;
9373 }
9474
9575 public async Task RemoveUserAsync ( User user )
@@ -122,7 +102,7 @@ public async Task RemoveUserAsync(User user)
122102 f => RemoveUser ( f . Value , user ) ) ) ;
123103
124104 var saveResult = await TrySaveAsync ( result , reference . ContentId ) ;
125- if ( saveResult . Type == FeatureFlagSaveResultType . Ok )
105+ if ( saveResult == FeatureFlagSaveResult . Ok )
126106 {
127107 return ;
128108 }
@@ -137,7 +117,7 @@ public async Task RemoveUserAsync(User user)
137117 throw new InvalidOperationException ( $ "Unable to remove user from feature flags after { MaxRemoveUserAttempts } attempts") ;
138118 }
139119
140- private async Task < FeatureFlagSaveResult > TrySaveAsync ( FeatureFlags flags , string contentId )
120+ public async Task < FeatureFlagSaveResult > TrySaveAsync ( FeatureFlags flags , string contentId )
141121 {
142122 var accessCondition = AccessConditionWrapper . GenerateIfMatchCondition ( contentId ) ;
143123
@@ -170,10 +150,5 @@ private Flight RemoveUser(Flight flight, User user)
170150 flight . Accounts . Where ( a => ! a . Equals ( user . Username , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ,
171151 flight . Domains ) ;
172152 }
173-
174- private string PrettifyJson ( string json )
175- {
176- return JToken . Parse ( json ) . ToString ( Formatting . Indented ) ;
177- }
178153 }
179154}
0 commit comments