Kore/app/src/debug/java/org/xbmc/kore/testutils/tcpserver/handlers/jsonrpc/response/methods/Playlist.java

121 lines
5.1 KiB
Java

/*
* Copyright 2018 Martijn Brekhof. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xbmc.kore.testutils.tcpserver.handlers.jsonrpc.response.methods;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.xbmc.kore.testutils.tcpserver.handlers.jsonrpc.JsonResponse;
/**
* Serverside JSON RPC responses in Playlist.*
*/
public class Playlist {
public enum playlistID {
AUDIO, VIDEO, PICTURE
}
/**
* JSON response for Playlist.GetItems request
*
* * Example:
* Query: {"jsonrpc":"2.0","method":"Playlist.GetItems","id":48,"params":
* {"playlistid":0,"properties":["art","artist","albumartist","album",
* "displayartist","episode","fanart","file","season",
* "showtitle","studio","tagline","thumbnail","title",
* "track","duration","runtime"]
* }
* }
* Answer: {"id":1,"jsonrpc":"2.0","result":{"items":
* [
* {"album":"My Time Is the Right Time",
* "albumartist":[],
* "art":{"artist.fanart":"image://http%3a%2f%2fmedia.theaudiodb.com%2fimages%2fmedia%2fartist%2ffanart%2fxpptss1381301172.jpg/"},
* "artist":["Alton Ellis"],
* "displayartist":"Alton Ellis",
* "duration":5,
* "fanart":"image://http%3a%2f%2fmedia.theaudiodb.com%2fimages%2fmedia%2fartist%2ffanart%2fxpptss1381301172.jpg/",
* "file":"/Users/martijn/Projects/dummymediafiles/media/music/Alton Ellis/My Time Is The Right Time/17-Black Man's Word.mp3",
* "id":41,
* "label":"Black Man's Word",
* "thumbnail":"",
* "title":"Black Man's Word",
* "track":17,
* "type":"song"}
* ],
* "limits":{"end":1,"start":0,"total":1}}}
*
* Playlist empty answer : {"id":48,"jsonrpc":"2.0","result":{"limits":{"end":0,"start":0,"total":0}}}
*
* @return JSON string
*/
public static class GetItems extends JsonResponse {
public final static String METHOD_NAME = "Playlist.GetItems";
int limitsEnd;
public GetItems(int id) {
super(id);
}
@Override
public String toJsonString() {
setLimits(0, limitsEnd, limitsEnd);
return super.toJsonString();
}
public void addItem(Player.GetItem playerItem) {
ObjectNode resultNode = (ObjectNode) getResultNode(TYPE.OBJECT);
JsonNode item = playerItem.getResultNode().get(Player.GetItem.ITEM);
addToArrayNode(resultNode, "items", item);
limitsEnd++;
}
}
/**
* JSON response for Playlist.GetPlaylists response
*
* Example:
* Query: {"jsonrpc":"2.0","method":"Playlist.GetPlaylists","id":31}
* Response: {"id":31,"jsonrpc":"2.0","result":[{"playlistid":0,"type":"audio"},{"playlistid":1,"type":"video"},{"playlistid":2,"type":"picture"}]}
*/
public static class GetPlaylists extends JsonResponse {
public final static String METHOD_NAME = "Playlist.GetPlaylists";
public GetPlaylists(int id) {
super(id);
ArrayNode playlists = createArrayNode();
playlists.add(createPlaylistNode(playlistID.AUDIO.ordinal(), "audio"));
playlists.add(createPlaylistNode(playlistID.VIDEO.ordinal(), "video"));
playlists.add(createPlaylistNode(playlistID.PICTURE.ordinal(), "picture"));
setResultToResponse(playlists);
}
private ObjectNode createPlaylistNode(int id, String type) {
ObjectNode playlistNode = createObjectNode();
playlistNode.put("playlistid", id);
playlistNode.put("type", type);
return playlistNode;
}
}
}