11using Microsoft . AspNetCore . Http ;
2+ using Microsoft . AspNetCore . Http . HttpResults ;
23using Microsoft . AspNetCore . Mvc ;
34using Microsoft . AspNetCore . Builder ;
45using Microsoft . AspNetCore . Routing ;
@@ -64,7 +65,7 @@ public static RouteGroupBuilder MapAskEndpoints(this IEndpointRouteBuilder app)
6465 /// <param name="loggerFactory">The logger factory</param>
6566 /// <param name="cancellationToken">Cancellation token</param>
6667 /// <returns>NLWeb response with results</returns>
67- private static async Task < IResult > ProcessQueryAsync (
68+ private static async Task < Results < Ok < NLWebResponse > , BadRequest < ProblemDetails > , StatusCodeHttpResult > > ProcessQueryAsync (
6869 [ FromBody ] NLWebRequest request ,
6970 INLWebService nlWebService , ILoggerFactory loggerFactory ,
7071 CancellationToken cancellationToken = default )
@@ -83,7 +84,7 @@ private static async Task<IResult> ProcessQueryAsync(
8384 if ( request == null )
8485 {
8586 logger . LogWarning ( "Received null request" ) ;
86- return Results . BadRequest ( new ProblemDetails
87+ return TypedResults . BadRequest ( new ProblemDetails
8788 {
8889 Title = "Bad Request" ,
8990 Detail = "Request body is required" ,
@@ -94,7 +95,7 @@ private static async Task<IResult> ProcessQueryAsync(
9495 if ( string . IsNullOrWhiteSpace ( request . Query ) )
9596 {
9697 logger . LogWarning ( "Received request with empty query" ) ;
97- return Results . BadRequest ( new ProblemDetails
98+ return TypedResults . BadRequest ( new ProblemDetails
9899 {
99100 Title = "Bad Request" ,
100101 Detail = "Query parameter is required and cannot be empty" ,
@@ -112,12 +113,12 @@ private static async Task<IResult> ProcessQueryAsync(
112113 response . QueryId , response . Results ? . Count ?? 0 ) ;
113114
114115 logger . LogInformation ( "[EXIT] /ask POST ProcessQueryAsync for QueryId={QueryId}" , response . QueryId ) ;
115- return Results . Ok ( response ) ;
116+ return TypedResults . Ok ( response ) ;
116117 }
117118 catch ( ValidationException ex )
118119 {
119120 logger . LogWarning ( ex , "Validation error processing query: {Message}" , ex . Message ) ;
120- return Results . BadRequest ( new ProblemDetails
121+ return TypedResults . BadRequest ( new ProblemDetails
121122 {
122123 Title = "Validation Error" ,
123124 Detail = ex . Message ,
@@ -127,7 +128,7 @@ private static async Task<IResult> ProcessQueryAsync(
127128 catch ( Exception ex )
128129 {
129130 logger . LogError ( ex , "[FAIL] Error processing NLWeb query: {Message}" , ex . Message ) ;
130- return Results . StatusCode ( StatusCodes . Status500InternalServerError ) ;
131+ return TypedResults . StatusCode ( StatusCodes . Status500InternalServerError ) ;
131132 }
132133 } /// <summary>
133134 /// Process a streaming natural language query with server-sent events.
@@ -141,7 +142,7 @@ private static async Task<IResult> ProcessQueryAsync(
141142 /// <param name="queryId">Optional query ID for correlation</param>
142143 /// <param name="cancellationToken">Cancellation token</param>
143144 /// <returns>Streaming response</returns>
144- private static Task < IResult > ProcessStreamingQueryAsync (
145+ private static Task < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ProcessStreamingQueryAsync (
145146 [ FromQuery ] string query ,
146147 INLWebService nlWebService ,
147148 ILoggerFactory loggerFactory ,
@@ -159,7 +160,7 @@ private static Task<IResult> ProcessStreamingQueryAsync(
159160 if ( string . IsNullOrWhiteSpace ( query ) )
160161 {
161162 logger . LogWarning ( "Received streaming request with empty query" ) ;
162- return Task . FromResult < IResult > ( Results . BadRequest ( new ProblemDetails
163+ return Task . FromResult < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ( TypedResults . BadRequest ( new ProblemDetails
163164 {
164165 Title = "Bad Request" ,
165166 Detail = "Query parameter is required and cannot be empty" ,
@@ -172,7 +173,7 @@ private static Task<IResult> ProcessStreamingQueryAsync(
172173 {
173174 if ( ! Enum . TryParse < QueryMode > ( mode , true , out queryMode ) )
174175 {
175- return Task . FromResult < IResult > ( Results . BadRequest ( new ProblemDetails
176+ return Task . FromResult < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ( TypedResults . BadRequest ( new ProblemDetails
176177 {
177178 Title = "Bad Request" ,
178179 Detail = $ "Invalid mode '{ mode } '. Valid values are: { string . Join ( ", " , Enum . GetNames < QueryMode > ( ) ) } ",
@@ -199,7 +200,7 @@ private static Task<IResult> ProcessStreamingQueryAsync(
199200 var streamingResults = nlWebService . ProcessRequestStreamAsync ( request , cancellationToken ) ;
200201 logger . LogDebug ( "ProcessRequestStreamAsync in NLWebService started for QueryId={QueryId}" , request . QueryId ) ;
201202
202- return Task . FromResult < IResult > ( Results . Stream ( async stream =>
203+ return Task . FromResult < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ( TypedResults . Stream ( async stream =>
203204 {
204205 var writer = new StreamWriter ( stream ) ;
205206 await writer . WriteLineAsync ( "Content-Type: text/event-stream" ) ;
@@ -232,7 +233,7 @@ private static Task<IResult> ProcessStreamingQueryAsync(
232233 catch ( ValidationException ex )
233234 {
234235 logger . LogWarning ( ex , "Validation error processing streaming query: {Message}" , ex . Message ) ;
235- return Task . FromResult < IResult > ( Results . BadRequest ( new ProblemDetails
236+ return Task . FromResult < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ( TypedResults . BadRequest ( new ProblemDetails
236237 {
237238 Title = "Validation Error" ,
238239 Detail = ex . Message ,
@@ -242,7 +243,12 @@ private static Task<IResult> ProcessStreamingQueryAsync(
242243 catch ( Exception ex )
243244 {
244245 logger . LogError ( ex , "[FAIL] Error processing streaming NLWeb query: {Message}" , ex . Message ) ;
245- return Task . FromResult < IResult > ( Results . StatusCode ( StatusCodes . Status500InternalServerError ) ) ;
246+ return Task . FromResult < Results < BadRequest < ProblemDetails > , PushStreamHttpResult > > ( TypedResults . BadRequest ( new ProblemDetails
247+ {
248+ Title = "Internal Server Error" ,
249+ Detail = "An error occurred while processing the streaming request" ,
250+ Status = StatusCodes . Status500InternalServerError
251+ } ) ) ;
246252 }
247253 } /// <summary>
248254 /// Process a simple query via GET request with query parameters.
@@ -257,7 +263,7 @@ private static Task<IResult> ProcessStreamingQueryAsync(
257263 /// <param name="queryId">Optional query ID for correlation</param>
258264 /// <param name="cancellationToken">Cancellation token</param>
259265 /// <returns>NLWeb response with results</returns>
260- private static async Task < IResult > ProcessSimpleQueryAsync (
266+ private static async Task < Results < Ok < NLWebResponse > , BadRequest < ProblemDetails > , StatusCodeHttpResult > > ProcessSimpleQueryAsync (
261267 [ FromQuery ] string query ,
262268 INLWebService nlWebService ,
263269 ILoggerFactory loggerFactory ,
@@ -275,7 +281,7 @@ private static async Task<IResult> ProcessSimpleQueryAsync(
275281 if ( string . IsNullOrWhiteSpace ( query ) )
276282 {
277283 logger . LogWarning ( "Received simple request with empty query" ) ;
278- return Results . BadRequest ( new ProblemDetails
284+ return TypedResults . BadRequest ( new ProblemDetails
279285 {
280286 Title = "Bad Request" ,
281287 Detail = "Query parameter is required and cannot be empty" ,
@@ -288,7 +294,7 @@ private static async Task<IResult> ProcessSimpleQueryAsync(
288294 {
289295 if ( ! Enum . TryParse < QueryMode > ( mode , true , out queryMode ) )
290296 {
291- return Results . BadRequest ( new ProblemDetails
297+ return TypedResults . BadRequest ( new ProblemDetails
292298 {
293299 Title = "Bad Request" ,
294300 Detail = $ "Invalid mode '{ mode } '. Valid values are: { string . Join ( ", " , Enum . GetNames < QueryMode > ( ) ) } ",
@@ -319,12 +325,12 @@ private static async Task<IResult> ProcessSimpleQueryAsync(
319325 response . QueryId , response . Results ? . Count ?? 0 ) ;
320326
321327 logger . LogInformation ( "[EXIT] /ask GET ProcessSimpleQueryAsync for QueryId={QueryId}" , response . QueryId ) ;
322- return Results . Ok ( response ) ;
328+ return TypedResults . Ok ( response ) ;
323329 }
324330 catch ( ValidationException ex )
325331 {
326332 logger . LogWarning ( ex , "Validation error processing simple query: {Message}" , ex . Message ) ;
327- return Results . BadRequest ( new ProblemDetails
333+ return TypedResults . BadRequest ( new ProblemDetails
328334 {
329335 Title = "Validation Error" ,
330336 Detail = ex . Message ,
@@ -334,7 +340,7 @@ private static async Task<IResult> ProcessSimpleQueryAsync(
334340 catch ( Exception ex )
335341 {
336342 logger . LogError ( ex , "[FAIL] Error processing simple NLWeb query: {Message}" , ex . Message ) ;
337- return Results . StatusCode ( StatusCodes . Status500InternalServerError ) ;
343+ return TypedResults . StatusCode ( StatusCodes . Status500InternalServerError ) ;
338344 }
339345 }
340346}
0 commit comments