Kore/app/src/debug/java/org/xbmc/kore/testutils/tcpserver/handlers/jsonrpc/response/notifications/Player.java

158 lines
6.1 KiB
Java

/*
* Copyright 2016 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.notifications;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.xbmc.kore.testutils.tcpserver.handlers.jsonrpc.JsonResponse;
import org.xbmc.kore.testutils.tcpserver.handlers.jsonrpc.JsonUtils;
public class Player {
abstract public static class PlayPause extends JsonResponse {
public static String TYPE_SONG = "song";
public static String TYPE_EPISODE = "episode";
public static String TYPE_MOVIE = "movie";
public static String TYPE_MUSICVIDEO = "musicvideo";
public static String TYPE_VIDEO = "video";
public static String TYPE_UNKNOWN = "unknown";
public static String TYPE_PICTURE = "picture";
public static String TYPE_CHANNEL = "channel";
private PlayPause(String methodName, int itemId, String itemType, int playerId, int speed) {
addMethodToResponse(methodName);
ObjectNode itemNode = createObjectNode();
itemNode.put("id", itemId);
if (itemType != null)
itemNode.put("type", itemType);
addDataToResponse("item", itemNode);
itemNode = createObjectNode();
itemNode.put("playerid", playerId);
itemNode.put("speed", speed);
addDataToResponse("player", itemNode);
addParameterToResponse("sender", "xbmc");
}
}
/**
* JSON response for Player.OnSpeedChanged notification
*
* Example:
* Answer: {"jsonrpc":"2.0","method":"Player.OnSpeedChanged","params":{"data":{"item":{"id":94,"type":"song"},"player":{"playerid":0,"speed":0}},"sender":"xbmc"}}
*/
public static class OnSpeedChanged extends PlayPause {
public final static String METHOD_NAME = "Player.OnSpeedChanged";
public OnSpeedChanged(int itemId, String itemType, int playerId, int speed) {
super(METHOD_NAME, itemId, itemType, playerId, speed);
}
}
/**
* JSON response for Player.OnPause notification
*
* Example:
* Answer: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":94,"type":"song"},"player":{"playerid":0,"speed":0}},"sender":"xbmc"}}
*/
public static class OnPause extends PlayPause {
public final static String METHOD_NAME = "Player.OnPause";
public OnPause(int itemId, String itemType, int playerId, int speed) {
super(METHOD_NAME, itemId, itemType, playerId, speed);
}
}
/**
* JSON response for Player.OnPlay notification
*
* Example:
* Answer: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1580,"type":"song"},"player":{"playerid":0,"speed":1}},"sender":"xbmc"}}
*/
public static class OnPlay extends PlayPause {
public final static String METHOD_NAME = "Player.OnPlay";
public OnPlay(int itemId, String itemType, int playerId, int speed) {
super(METHOD_NAME, itemId, itemType, playerId, speed);
}
}
/**
* JSON response for Player.OnPropertyChanged notification
*
* Example:
* {"jsonrpc":"2.0","method":"Player.OnPropertyChanged","params":{"data":{"player":{"playerid":0},"property":{"repeat":"all"}},"sender":"xbmc"}}
*/
public static class OnPropertyChanged extends JsonResponse {
public final static String METHOD_NAME = "Player.OnPropertyChanged";
public OnPropertyChanged(String repeatType, Boolean shuffled, int playerId) {
super();
addMethodToResponse(METHOD_NAME);
ObjectNode playerIdNode = createObjectNode();
playerIdNode.put("playerid", playerId);
addDataToResponse("player", playerIdNode);
if (repeatType != null) {
ObjectNode repeatNode = createObjectNode();
repeatNode.put("repeat", repeatType);
addDataToResponse("property", repeatNode);
}
if (shuffled != null) {
ObjectNode repeatNode = createObjectNode();
repeatNode.put("shuffled", shuffled);
addDataToResponse("property", repeatNode);
}
addParameterToResponse("sender", "xbmc");
}
}
/**
* JSON response for Player.OnPropertyChanged notification
*
* Example:
* {"jsonrpc":"2.0","method":"Player.OnSeek", "params":{ "data":{"item":{ "id":127,"type":"episode" },"player":{ "playerid":1,"seekoffset":{ "hours":0,"milliseconds":0, "minutes":0,"seconds":-14 },"speed":0, "time":{"hours":0, "milliseconds":0,"minutes":0, "seconds":2} }},"sender":"xbmc" }}
*/
public static class OnSeek extends JsonResponse {
public final static String METHOD_NAME = "Player.OnSeek";
public OnSeek(int itemId, String type, int playerId, int speed, long seekOffsetSecs, long timeSecs) {
super();
addMethodToResponse(METHOD_NAME);
ObjectNode itemNode = createObjectNode();
itemNode.put("id", itemId);
itemNode.put("type", type);
addDataToResponse("item", itemNode);
ObjectNode playerNode = createObjectNode();
playerNode.put("playerid", playerId);
playerNode.set("seekoffset", JsonUtils.createTimeNode(createObjectNode(), seekOffsetSecs));
playerNode.set("time", JsonUtils.createTimeNode(createObjectNode(), timeSecs));
playerNode.put("speed", speed);
addDataToResponse("player", playerNode);
addParameterToResponse("sender", "xbmc");
}
}
}