From 0625b59e644f2618af4770dbdc8b35e790ab1d66 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sun, 18 Sep 2022 15:31:40 +0200 Subject: [PATCH] add post parameter for duplicates --- src/main/java/me/kavin/piped/ServerLauncher.java | 4 +++- .../java/me/kavin/piped/utils/ResponseHelper.java | 14 +++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/me/kavin/piped/ServerLauncher.java b/src/main/java/me/kavin/piped/ServerLauncher.java index 6af8613..01a959e 100644 --- a/src/main/java/me/kavin/piped/ServerLauncher.java +++ b/src/main/java/me/kavin/piped/ServerLauncher.java @@ -332,7 +332,9 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher { var json = Constants.mapper.readTree(request.loadBody().getResult().asArray()); var playlistId = json.get("playlistId").textValue(); var videoId = json.get("videoId").textValue(); - return getJsonResponse(ResponseHelper.addToPlaylistResponse(request.getHeader(AUTHORIZATION), playlistId, videoId), "private"); + var allowDupicatesValue = json.get("allowDuplicates"); + var allowDuplicates = allowDupicatesValue == null ? true : allowDupicatesValue.booleanValue(); + return getJsonResponse(ResponseHelper.addToPlaylistResponse(request.getHeader(AUTHORIZATION), playlistId, videoId, allowDuplicates), "private"); } catch (Exception e) { return getErrorResponse(e, request.getPath()); } diff --git a/src/main/java/me/kavin/piped/utils/ResponseHelper.java b/src/main/java/me/kavin/piped/utils/ResponseHelper.java index 4b3e1c4..9217609 100644 --- a/src/main/java/me/kavin/piped/utils/ResponseHelper.java +++ b/src/main/java/me/kavin/piped/utils/ResponseHelper.java @@ -1390,7 +1390,7 @@ public class ResponseHelper { ); } - public static byte[] addToPlaylistResponse(String session, String playlistId, String videoId) throws IOException, ExtractionException { + public static byte[] addToPlaylistResponse(String session, String playlistId, String videoId, Boolean allowDuplicates) throws IOException, ExtractionException { if (StringUtils.isBlank(playlistId) || StringUtils.isBlank(videoId)) return mapper.writeValueAsBytes(new InvalidRequestResponse()); @@ -1413,10 +1413,14 @@ public class ResponseHelper { return mapper.writeValueAsBytes(mapper.createObjectNode() .put("error", "Playlist not found")); - for (PlaylistVideo video : playlist.getVideos()) { - if (video.getId() == videoId) return mapper.writeValueAsBytes(mapper.createObjectNode() - .put("error", "Playlist already contains the video")); - }; + if (!allowDuplicates) { + for (PlaylistVideo video : playlist.getVideos()) { + if (video.getId() == videoId) + return mapper.writeValueAsBytes(mapper.createObjectNode() + .put("error", "The playlist already contains the video")); + } + ; + } if (playlist.getOwner().getId() != user.getId()) return mapper.writeValueAsBytes(mapper.createObjectNode()