@@ -62,6 +62,28 @@ private static void setVolume(HttpServerExchange exchange, @NotNull Player playe
6262 }
6363 }
6464
65+ private static void setRepeat (HttpServerExchange exchange , @ NotNull Player player , @ Nullable String mode ) {
66+ if (mode == null ) {
67+ Utils .invalidParameter (exchange , "val" );
68+ return ;
69+ }
70+
71+ switch (mode ) {
72+ case "none" :
73+ player .setRepeat (false , false );
74+ break ;
75+ case "context" :
76+ player .setRepeat (false , true );
77+ break ;
78+ case "track" :
79+ player .setRepeat (true , false );
80+ break ;
81+ default :
82+ Utils .invalidParameter (exchange , "val" , "Unknown mode" );
83+ break ;
84+ }
85+ }
86+
6587 private static void load (HttpServerExchange exchange , @ NotNull Player player , @ Nullable String uri , boolean play ) {
6688 if (uri == null ) {
6789 Utils .invalidParameter (exchange , "uri" );
@@ -217,15 +239,21 @@ protected void handleRequest(@NotNull HttpServerExchange exchange, @NotNull Sess
217239 case REMOVE_FROM_QUEUE :
218240 removeFromQueue (exchange , player , Utils .getFirstString (params , "uri" ));
219241 break ;
242+ case SHUFFLE :
243+ player .setShuffle (Utils .getFirstBoolean (params , "val" ));
244+ break ;
245+ case REPEAT :
246+ setRepeat (exchange , player , Utils .getFirstString (params , "val" ));
247+ break ;
220248 default :
221249 throw new IllegalArgumentException (cmd .name ());
222250 }
223251 }
224252
225253 private enum Command {
226254 LOAD ("load" ), PLAY_PAUSE ("play-pause" ), PAUSE ("pause" ), RESUME ("resume" ), TRACKS ("tracks" ),
227- NEXT ("next" ), PREV ("prev" ), SET_VOLUME ("set-volume" ), SEEK ("seek" ),
228- VOLUME_UP ("volume-up" ), VOLUME_DOWN ("volume-down" ), CURRENT ("current" ),
255+ NEXT ("next" ), PREV ("prev" ), SET_VOLUME ("set-volume" ), SEEK ("seek" ), SHUFFLE ( "shuffle" ),
256+ VOLUME_UP ("volume-up" ), VOLUME_DOWN ("volume-down" ), CURRENT ("current" ), REPEAT ( "repeat" ),
229257 ADD_TO_QUEUE ("addToQueue" ), REMOVE_FROM_QUEUE ("removeFromQueue" );
230258
231259 private final String name ;
0 commit comments