package mediabrowser.apiinteraction.connectionmanager;
import mediabrowser.apiinteraction.Response;
import mediabrowser.model.apiclient.ServerDiscoveryInfo;
import mediabrowser.model.apiclient.ServerInfo;
import mediabrowser.model.extensions.IntHelper;
import java.util.ArrayList;
import java.util.Date;
public class FindServersInnerResponse extends Response<ArrayList<ServerDiscoveryInfo>> {
private ConnectionManager connectionManager;
private Response<ArrayList<ServerInfo>> response;
public FindServersInnerResponse(ConnectionManager connectionManager, Response<ArrayList<ServerInfo>> response) {
this.connectionManager = connectionManager;
this.response = response;
}
@Override
public void onResponse(ArrayList<ServerDiscoveryInfo> foundServers) {
ArrayList<ServerInfo> servers = new ArrayList<ServerInfo>();
for (int i = 0; i < foundServers.size(); i++) {
ServerInfo server = new ServerInfo();
ServerDiscoveryInfo foundServer = foundServers.get(i);
server.setId(foundServer.getId());
server.setName(foundServer.getName());
String localAddress = ConvertEndpointAddressToManualAddress(foundServer);
if (localAddress == null) {
localAddress = foundServer.getAddress();
}
server.setLocalAddress(localAddress);
servers.add(server);
}
response.onResponse(servers);
}
@Override
public void onError(Exception ex) {
ArrayList<ServerInfo> servers = new ArrayList<ServerInfo>();
response.onResponse(servers);
}
private String ConvertEndpointAddressToManualAddress(ServerDiscoveryInfo info)
{
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(info.getAddress()) && !tangible.DotNetToJavaStringHelper.isNullOrEmpty(info.getEndpointAddress()))
{
String address = info.getEndpointAddress().split(":")[0];
// Determine the port, if any
String[] parts = info.getAddress().split(":");
if (parts.length > 1)
{
String portString = parts[parts.length-1];
int port = 0;
tangible.RefObject<Integer> tempRef_expected = new tangible.RefObject<Integer>(port);
if (IntHelper.TryParseCultureInvariant(portString, tempRef_expected))
{
address += ":" + portString;
}
}
return connectionManager.NormalizeAddress(address);
}
return null;
}
}