158 lines
6.1 KiB
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");
|
|
}
|
|
}
|
|
}
|