@@ -320,7 +320,19 @@ AsyncServlet mainServlet(Executor executor) {
320320 }
321321 })).map (GET , "/feed" , AsyncServlet .ofBlocking (executor , request -> {
322322 try {
323- return getJsonResponse (FeedHandlers .feedResponse (request .getQueryParameter ("authToken" ), request .getQueryParameter ("start" )),
323+
324+ int limit ;
325+ try {
326+ var limitStr = request .getQueryParameter ("limit" );
327+ if (!StringUtils .isEmpty (limitStr ))
328+ limit = Math .min (Integer .parseInt (limitStr ), 100 );
329+ else
330+ limit = 100 ;
331+ } catch (NumberFormatException e ) {
332+ limit = 100 ;
333+ }
334+
335+ return getJsonResponse (FeedHandlers .feedResponse (request .getQueryParameter ("authToken" ), request .getQueryParameter ("start" ), limit ),
324336 "private" );
325337 } catch (Exception e ) {
326338 return getErrorResponse (e , request .getPath ());
@@ -334,8 +346,20 @@ AsyncServlet mainServlet(Executor executor) {
334346 }
335347 })).map (GET , "/feed/unauthenticated" , AsyncServlet .ofBlocking (executor , request -> {
336348 try {
349+
350+ int limit ;
351+ try {
352+ var limitStr = request .getQueryParameter ("limit" );
353+ if (!StringUtils .isEmpty (limitStr ))
354+ limit = Math .min (Integer .parseInt (limitStr ), 100 );
355+ else
356+ limit = 100 ;
357+ } catch (NumberFormatException e ) {
358+ limit = 100 ;
359+ }
360+
337361 return getJsonResponse (FeedHandlers .unauthenticatedFeedResponse (
338- getArray (request .getQueryParameter ("channels" )), request .getQueryParameter ("start" )
362+ getArray (request .getQueryParameter ("channels" )), request .getQueryParameter ("start" ), limit
339363 ), "public, s-maxage=120" );
340364 } catch (Exception e ) {
341365 return getErrorResponse (e , request .getPath ());
@@ -344,7 +368,19 @@ AsyncServlet mainServlet(Executor executor) {
344368 try {
345369 String [] subscriptions = mapper .readValue (request .loadBody ().getResult ().asArray (),
346370 String [].class );
347- return getJsonResponse (FeedHandlers .unauthenticatedFeedResponse (subscriptions , request .getQueryParameter ("start" )), "public, s-maxage=120" );
371+
372+ int limit ;
373+ try {
374+ var limitStr = request .getQueryParameter ("limit" );
375+ if (!StringUtils .isEmpty (limitStr ))
376+ limit = Math .min (Integer .parseInt (limitStr ), 100 );
377+ else
378+ limit = 100 ;
379+ } catch (NumberFormatException e ) {
380+ limit = 100 ;
381+ }
382+
383+ return getJsonResponse (FeedHandlers .unauthenticatedFeedResponse (subscriptions , request .getQueryParameter ("start" ), limit ), "public, s-maxage=120" );
348384 } catch (Exception e ) {
349385 return getErrorResponse (e , request .getPath ());
350386 }
0 commit comments