private void resolveServer() throws UnknownHostException { MediaContainer container = getDocument(API_RESOURCES_URL, MediaContainer.class); // We need the IP-address to find this server in the server list on plex.tv String ip = resolveHostname(connection.getHost()); if (container != null) { for (Device device : container.getDevices()) { if (contains(device.getProvides(), "server")) { for (Connection deviceConnection : device.getConnections()) { boolean uriSet = (connection.getUri() != null); boolean portEqual = String.valueOf(connection.getPort()).equals(deviceConnection.getPort()); boolean hostEqual = ip.equals(deviceConnection.getAddress()); if (!uriSet && portEqual && hostEqual) { connection.setUri(deviceConnection.getUri()); connection.setApiLevel(PlexApiLevel.getApiLevel(device.getProductVersion())); logger.debug( "Server found, version {}, api level {}", device.getProductVersion(), connection.getApiLevel()); } } } } } if (connection.getUri() == null) { logger.warn( "Server not found in plex.tv device list, setting URI from configured data. Try configuring IP-address of host."); connection.setUri(String.format("http://%s:%d", ip, connection.getPort())); } }