Kore/app/src/main/java/org/xbmc/kore/jsonrpc/method/PVR.java

207 lines
6.2 KiB
Java

package org.xbmc.kore.jsonrpc.method;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.xbmc.kore.jsonrpc.ApiException;
import org.xbmc.kore.jsonrpc.ApiMethod;
import org.xbmc.kore.jsonrpc.type.PVRType;
import java.util.ArrayList;
import java.util.List;
/**
* All JSON RPC methods in PVR.*
*/
public class PVR {
/**
* Retrieves the channel groups for the specified type
*/
public static class GetChannelGroups extends ApiMethod<List<PVRType.DetailsChannelGroup>> {
public final static String METHOD_NAME = "PVR.GetChannelGroups";
private final static String LIST_NODE = "channelgroups";
/**
* Retrieves the channel groups for the specified type
*
* @param channeltype Channel type. See {@link org.xbmc.kore.jsonrpc.type.PVRType.ChannelType}
*/
public GetChannelGroups(String channeltype) {
super();
addParameterToRequest("channeltype", channeltype);
}
@Override
public String getMethodName() {
return METHOD_NAME;
}
@Override
public List<PVRType.DetailsChannelGroup> resultFromJson(ObjectNode jsonObject)
throws ApiException {
JsonNode resultNode = jsonObject.get(RESULT_NODE);
ArrayNode items = resultNode.has(LIST_NODE) ?
(ArrayNode)resultNode.get(LIST_NODE) : null;
if (items == null) {
return new ArrayList<>(0);
}
ArrayList<PVRType.DetailsChannelGroup> result = new ArrayList<>(items.size());
for (JsonNode item : items) {
result.add(new PVRType.DetailsChannelGroup(item));
}
return result;
}
}
/**
* Retrieves the channel list
*/
public static class GetChannels extends ApiMethod<List<PVRType.DetailsChannel>> {
public final static String METHOD_NAME = "PVR.GetChannels";
private final static String LIST_NODE = "channels";
/**
* Retrieves the channel list
*
* @param channelgroupid Group id, required
* @param properties Properties to retrieve. See {@link PVRType.FieldsChannel} for a list of
* accepted values
*/
public GetChannels(int channelgroupid, String... properties) {
super();
addParameterToRequest("channelgroupid", channelgroupid);
addParameterToRequest("properties", properties);
}
@Override
public String getMethodName() {
return METHOD_NAME;
}
@Override
public List<PVRType.DetailsChannel> resultFromJson(ObjectNode jsonObject)
throws ApiException {
JsonNode resultNode = jsonObject.get(RESULT_NODE);
ArrayNode items = resultNode.has(LIST_NODE) ?
(ArrayNode)resultNode.get(LIST_NODE) : null;
if (items == null) {
return new ArrayList<>(0);
}
ArrayList<PVRType.DetailsChannel> result = new ArrayList<>(items.size());
for (JsonNode item : items) {
result.add(new PVRType.DetailsChannel(item));
}
return result;
}
}
/**
* Retrieves the program of a specific channel
*/
public static class GetBroadcasts extends ApiMethod<List<PVRType.DetailsBroadcast>> {
public final static String METHOD_NAME = "PVR.GetBroadcasts";
private final static String LIST_NODE = "broadcasts";
/**
* Retrieves the program of a specific channel
*
* @param channelid Channel id, required
* @param properties Properties to retrieve. See {@link PVRType.FieldsBroadcast} for a list of
* accepted values
*/
public GetBroadcasts(int channelid, String... properties) {
super();
addParameterToRequest("channelid", channelid);
addParameterToRequest("properties", properties);
}
@Override
public String getMethodName() {
return METHOD_NAME;
}
@Override
public List<PVRType.DetailsBroadcast> resultFromJson(ObjectNode jsonObject)
throws ApiException {
JsonNode resultNode = jsonObject.get(RESULT_NODE);
ArrayNode items = resultNode.has(LIST_NODE) ?
(ArrayNode)resultNode.get(LIST_NODE) : null;
if (items == null) {
return new ArrayList<>(0);
}
ArrayList<PVRType.DetailsBroadcast> result = new ArrayList<>(items.size());
for (JsonNode item : items) {
result.add(new PVRType.DetailsBroadcast(item));
}
return result;
}
}
/**
* Toggle recording of a channel
*/
public static final class Record extends ApiMethod<String> {
public final static String METHOD_NAME = "PVR.Record";
/**
* Records a channel
*/
public Record(boolean record) {
super();
addParameterToRequest("record", record);
}
/**
* Toggle recording of a channel
*/
public Record() {
super();
addParameterToRequest("record", "toggle");
}
@Override
public String getMethodName() {
return METHOD_NAME;
}
@Override
public String resultFromJson(ObjectNode jsonObject) throws ApiException {
return jsonObject.get(RESULT_NODE).textValue();
}
}
/**
* Starts a channel scan
*/
public static final class Scan extends ApiMethod<String> {
public final static String METHOD_NAME = "PVR.Shutdown";
/**
* Starts a channel scan
*/
public Scan() {
super();
}
@Override
public String getMethodName() {
return METHOD_NAME;
}
@Override
public String resultFromJson(ObjectNode jsonObject) throws ApiException {
return jsonObject.get(RESULT_NODE).textValue();
}
}
}