/* * Copyright 2015 Synced Synapse. 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.jsonrpc.type; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import org.xbmc.kore.utils.JsonUtils; import java.util.ArrayList; import java.util.List; /** * Types from Video.* */ public class VideoType { public static class Cast { public static final String NAME = "name"; public static final String ORDER = "order"; public static final String ROLE = "role"; public static final String THUMBNAIL = "thumbnail"; public final String name; public final int order; public final String role; public final String thumbnail; public Cast(JsonNode node) { name = JsonUtils.stringFromJsonNode(node, NAME); order = JsonUtils.intFromJsonNode(node, ORDER, 0); role = JsonUtils.stringFromJsonNode(node, ROLE); thumbnail = JsonUtils.stringFromJsonNode(node, THUMBNAIL); } public Cast(String name, int order, String role, String thumbnail) { this.name = name; this.order = order; this.role = role; this.thumbnail = thumbnail; } public static List castListFromJsonNode(JsonNode node, String key) { if ((node == null) || (!node.has(key))) { return new ArrayList(0); } ArrayNode arrayNode = (ArrayNode) node.get(key); ArrayList castList = new ArrayList(arrayNode.size()); for (JsonNode innerNode : arrayNode) { castList.add(new Cast(innerNode)); } return castList; } } public static class Resume { public static final String POSITION = "position"; public static final String TOTAL = "total"; public final double position; public final double total; public Resume(JsonNode node) { position = JsonUtils.doubleFromJsonNode(node, POSITION, 0); total = JsonUtils.doubleFromJsonNode(node, TOTAL, 0); } } public static class Streams { public static class Audio { public static final String CHANNELS = "channels"; public static final String CODEC = "codec"; public static final String LANGUAGE = "language"; public final int channels; public final String codec; public final String language; public Audio(JsonNode node) { channels = JsonUtils.intFromJsonNode(node, CHANNELS, 0); codec = JsonUtils.stringFromJsonNode(node, CODEC); language = JsonUtils.stringFromJsonNode(node, LANGUAGE); } } public static class Subtitle { public static final String LANGUAGE = "language"; public final String language; public Subtitle(JsonNode node) { language = JsonUtils.stringFromJsonNode(node, LANGUAGE, null); } } public static class Video { public static final String ASPECT = "aspect"; public static final String CODEC = "codec"; public static final String DURATION = "duration"; public static final String HEIGHT = "height"; public static final String WIDTH = "width"; public final double aspect; public final String codec; public final int duration; public final int height; public final int width; public Video(JsonNode node) { aspect = JsonUtils.doubleFromJsonNode(node, ASPECT, 0); codec = JsonUtils.stringFromJsonNode(node, CODEC, null); duration = JsonUtils.intFromJsonNode(node, DURATION, -1); height = JsonUtils.intFromJsonNode(node, HEIGHT, -1); width = JsonUtils.intFromJsonNode(node, WIDTH, -1); } } public static final String AUDIO = "audio"; public static final String SUBTITLE = "subtitle"; public static final String VIDEO = "video"; // class members public final List