@@ -20,15 +20,10 @@ namespace Synapse.Api.Http;
2020/// <param name="mediator">The service used to mediate calls</param>
2121/// <param name="jsonSerializer">The service used to serialize/deserialize data to/from JSON</param>
2222public abstract class NamespacedResourceController < TResource > ( IMediator mediator , IJsonSerializer jsonSerializer )
23- : ResourceController < TResource > ( mediator )
23+ : ResourceController < TResource > ( mediator , jsonSerializer )
2424 where TResource : class , IResource , new ( )
2525{
2626
27- /// <summary>
28- /// Gets the service used to serialize/deserialize data to/from JSON
29- /// </summary>
30- protected IJsonSerializer JsonSerializer { get ; } = jsonSerializer ;
31-
3227 /// <summary>
3328 /// Gets the resource with the specified name and namespace
3429 /// </summary>
@@ -150,13 +145,17 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Watc
150145 /// <param name="namespace">The namespace the resources to watch belong to</param>
151146 /// <param name="labelSelector">A comma-separated list of label selectors, if any</param>
152147 /// <param name="cancellationToken">A <see cref="CancellationToken"/></param>
153- /// <returns>A new <see cref="IActionResult "/></returns>
148+ /// <returns>A new awaitable <see cref="Task "/></returns>
154149 [ HttpGet ( "{namespace}/watch/sse" ) ]
155150 [ ProducesResponseType ( typeof ( IAsyncEnumerable < ResourceWatchEvent > ) , ( int ) HttpStatusCode . OK ) ]
156151 [ ProducesErrorResponseType ( typeof ( Neuroglia . ProblemDetails ) ) ]
157- public virtual async Task < IActionResult > WatchResourcesUsingSSE ( string @namespace , string ? labelSelector = null , CancellationToken cancellationToken = default )
152+ public virtual async Task WatchResourcesUsingSSE ( string @namespace , string ? labelSelector = null , CancellationToken cancellationToken = default )
158153 {
159- if ( ! this . TryParseLabelSelectors ( labelSelector , out var labelSelectors ) ) return this . InvalidLabelSelector ( labelSelector ! ) ;
154+ if ( ! this . TryParseLabelSelectors ( labelSelector , out var labelSelectors ) )
155+ {
156+ await WriteInvalidLabelSelectorResponseAsync ( labelSelector ! , cancellationToken ) . ConfigureAwait ( false ) ;
157+ return ;
158+ }
160159 var response = await this . Mediator . ExecuteAsync ( new WatchResourcesQuery < TResource > ( @namespace , labelSelectors ) , cancellationToken ) . ConfigureAwait ( false ) ;
161160 this . Response . Headers . ContentType = "text/event-stream" ;
162161 this . Response . Headers . CacheControl = "no-cache" ;
@@ -172,7 +171,6 @@ public virtual async Task<IActionResult> WatchResourcesUsingSSE(string @namespac
172171 }
173172 }
174173 catch ( Exception ex ) when ( ex is TaskCanceledException || ex is OperationCanceledException ) { }
175- return this . Ok ( ) ;
176174 }
177175
178176 /// <summary>
@@ -197,11 +195,11 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Moni
197195 /// <param name="namespace">The namespace the resource to monitor belongs to</param>
198196 /// <param name="name">The name of the resource to monitor</param>
199197 /// <param name="cancellationToken">A <see cref="CancellationToken"/></param>
200- /// <returns>A new <see cref="IActionResult "/></returns>
198+ /// <returns>A new awaitable <see cref="Task "/></returns>
201199 [ HttpGet ( "{namespace}/{name}/monitor/sse" ) ]
202200 [ ProducesResponseType ( typeof ( IAsyncEnumerable < ResourceWatchEvent > ) , ( int ) HttpStatusCode . OK ) ]
203201 [ ProducesErrorResponseType ( typeof ( Neuroglia . ProblemDetails ) ) ]
204- public virtual async Task < IActionResult > MonitorResourceUsingSSE ( string name , string @namespace , CancellationToken cancellationToken = default )
202+ public virtual async Task MonitorResourceUsingSSE ( string name , string @namespace , CancellationToken cancellationToken = default )
205203 {
206204 var response = await this . Mediator . ExecuteAsync ( new MonitorResourceQuery < TResource > ( name , @namespace ) , cancellationToken ) . ConfigureAwait ( false ) ;
207205 this . Response . Headers . ContentType = "text/event-stream" ;
@@ -218,7 +216,6 @@ public virtual async Task<IActionResult> MonitorResourceUsingSSE(string name, st
218216 }
219217 }
220218 catch ( Exception ex ) when ( ex is TaskCanceledException || ex is OperationCanceledException ) { }
221- return this . Ok ( ) ;
222219 }
223220
224221 /// <summary>
0 commit comments