allow for injectable server discovery
This commit is contained in:
parent
61f7ca1da4
commit
6ba570e062
3 changed files with 91 additions and 26 deletions
|
@ -59,7 +59,6 @@
|
||||||
{ MacAddress: systemInfo.MacAddress }
|
{ MacAddress: systemInfo.MacAddress }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryConnect(url, timeout) {
|
function tryConnect(url, timeout) {
|
||||||
|
@ -490,18 +489,18 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function getConnectServers() {
|
function getConnectServers(credentials) {
|
||||||
|
|
||||||
logger.log('Begin getConnectServers');
|
logger.log('Begin getConnectServers');
|
||||||
|
|
||||||
var deferred = DeferredBuilder.Deferred();
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
|
||||||
if (!self.connectToken() || !self.connectUserId()) {
|
if (!credentials.ConnectAccessToken || !credentials.ConnectUserId) {
|
||||||
deferred.resolveWith(null, [[]]);
|
deferred.resolveWith(null, [[]]);
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + self.connectUserId();
|
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + credentials.ConnectUserId;
|
||||||
|
|
||||||
AjaxApi.ajax({
|
AjaxApi.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -509,7 +508,7 @@
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
headers: {
|
headers: {
|
||||||
"X-Application": appName + "/" + appVersion,
|
"X-Application": appName + "/" + appVersion,
|
||||||
"X-Connect-UserToken": self.connectToken()
|
"X-Connect-UserToken": credentials.ConnectAccessToken
|
||||||
}
|
}
|
||||||
|
|
||||||
}).done(function (servers) {
|
}).done(function (servers) {
|
||||||
|
@ -542,28 +541,72 @@
|
||||||
|
|
||||||
// Clone the array
|
// Clone the array
|
||||||
var credentials = credentialProvider.credentials();
|
var credentials = credentialProvider.credentials();
|
||||||
var servers = credentials.servers.slice(0);
|
|
||||||
|
|
||||||
var deferred = DeferredBuilder.Deferred();
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
|
||||||
getConnectServers().done(function (result) {
|
var connectServersPromise = getConnectServers(credentials);
|
||||||
|
var findServersPromise = findServers();
|
||||||
|
|
||||||
var newList = mergeServers(servers, result);
|
connectServersPromise.done(function (connectServers) {
|
||||||
|
|
||||||
newList.sort(function (a, b) {
|
findServersPromise.done(function (foundServers) {
|
||||||
return b.DateLastAccessed - a.DateLastAccessed;
|
|
||||||
|
var servers = credentials.servers.slice(0);
|
||||||
|
mergeServers(servers, foundServers);
|
||||||
|
mergeServers(servers, connectServers);
|
||||||
|
|
||||||
|
servers = filterServers(servers, connectServers);
|
||||||
|
|
||||||
|
servers.sort(function (a, b) {
|
||||||
|
return b.DateLastAccessed - a.DateLastAccessed;
|
||||||
|
});
|
||||||
|
|
||||||
|
credentials.servers = servers;
|
||||||
|
|
||||||
|
credentialProvider.credentials(credentials);
|
||||||
|
|
||||||
|
deferred.resolveWith(null, [servers]);
|
||||||
});
|
});
|
||||||
|
|
||||||
credentials.servers = newList;
|
|
||||||
|
|
||||||
credentialProvider.credentials(credentials);
|
|
||||||
|
|
||||||
deferred.resolveWith(null, [newList]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function filterServers(servers, connectServers) {
|
||||||
|
|
||||||
|
return servers.filter(function (server) {
|
||||||
|
|
||||||
|
// It's not a connect server, so assume it's still valid
|
||||||
|
if (!server.ExchangeToken) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return connectServers.filter(function (connectServer) {
|
||||||
|
|
||||||
|
return server.Id == connectServer.Id;
|
||||||
|
|
||||||
|
}).length > 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function findServers() {
|
||||||
|
|
||||||
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
ServerDiscovery.findServers().done(function (foundServers) {
|
||||||
|
|
||||||
|
var servers = foundServers.map(function (foundServer) {
|
||||||
|
|
||||||
|
return {
|
||||||
|
Id: foundServer.Id,
|
||||||
|
LocalAddress: foundServer.Address,
|
||||||
|
Name: foundServer.Name
|
||||||
|
};
|
||||||
|
});
|
||||||
|
deferred.resolveWith(null, [servers]);
|
||||||
|
});
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
self.connect = function () {
|
self.connect = function () {
|
||||||
|
|
||||||
logger.log('Begin connect');
|
logger.log('Begin connect');
|
||||||
|
@ -929,7 +972,9 @@
|
||||||
|
|
||||||
self.getUserInvitations = function () {
|
self.getUserInvitations = function () {
|
||||||
|
|
||||||
if (!self.connectToken()) {
|
var connectToken = self.connectToken();
|
||||||
|
|
||||||
|
if (!connectToken) {
|
||||||
throw new Error("null connectToken");
|
throw new Error("null connectToken");
|
||||||
}
|
}
|
||||||
if (!self.connectUserId()) {
|
if (!self.connectUserId()) {
|
||||||
|
@ -943,7 +988,7 @@
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
headers: {
|
headers: {
|
||||||
"X-Connect-UserToken": self.connectToken(),
|
"X-Connect-UserToken": connectToken,
|
||||||
"X-Application": appName + "/" + appVersion
|
"X-Application": appName + "/" + appVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -952,10 +997,12 @@
|
||||||
|
|
||||||
self.deleteServer = function (serverId) {
|
self.deleteServer = function (serverId) {
|
||||||
|
|
||||||
|
var connectToken = self.connectToken();
|
||||||
|
|
||||||
if (!serverId) {
|
if (!serverId) {
|
||||||
throw new Error("null serverId");
|
throw new Error("null serverId");
|
||||||
}
|
}
|
||||||
if (!self.connectToken()) {
|
if (!connectToken) {
|
||||||
throw new Error("null connectToken");
|
throw new Error("null connectToken");
|
||||||
}
|
}
|
||||||
if (!self.connectUserId()) {
|
if (!self.connectUserId()) {
|
||||||
|
@ -968,7 +1015,7 @@
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
"X-Connect-UserToken": self.connectToken(),
|
"X-Connect-UserToken": connectToken,
|
||||||
"X-Application": appName + "/" + appVersion
|
"X-Application": appName + "/" + appVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -987,10 +1034,12 @@
|
||||||
|
|
||||||
self.rejectServer = function (serverId) {
|
self.rejectServer = function (serverId) {
|
||||||
|
|
||||||
|
var connectToken = self.connectToken();
|
||||||
|
|
||||||
if (!serverId) {
|
if (!serverId) {
|
||||||
throw new Error("null serverId");
|
throw new Error("null serverId");
|
||||||
}
|
}
|
||||||
if (!self.connectToken()) {
|
if (!connectToken) {
|
||||||
throw new Error("null connectToken");
|
throw new Error("null connectToken");
|
||||||
}
|
}
|
||||||
if (!self.connectUserId()) {
|
if (!self.connectUserId()) {
|
||||||
|
@ -1003,7 +1052,7 @@
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
"X-Connect-UserToken": self.connectToken(),
|
"X-Connect-UserToken": connectToken,
|
||||||
"X-Application": appName + "/" + appVersion
|
"X-Application": appName + "/" + appVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1012,10 +1061,12 @@
|
||||||
|
|
||||||
self.acceptServer = function (serverId) {
|
self.acceptServer = function (serverId) {
|
||||||
|
|
||||||
|
var connectToken = self.connectToken();
|
||||||
|
|
||||||
if (!serverId) {
|
if (!serverId) {
|
||||||
throw new Error("null serverId");
|
throw new Error("null serverId");
|
||||||
}
|
}
|
||||||
if (!self.connectToken()) {
|
if (!connectToken) {
|
||||||
throw new Error("null connectToken");
|
throw new Error("null connectToken");
|
||||||
}
|
}
|
||||||
if (!self.connectUserId()) {
|
if (!self.connectUserId()) {
|
||||||
|
@ -1028,7 +1079,7 @@
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
"X-Connect-UserToken": self.connectToken(),
|
"X-Connect-UserToken": connectToken,
|
||||||
"X-Application": appName + "/" + appVersion
|
"X-Application": appName + "/" + appVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function set(data) {
|
function set(data) {
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
credentials = data;
|
credentials = data;
|
||||||
store.setItem(key, JSON.stringify(data));
|
store.setItem(key, JSON.stringify(data));
|
||||||
|
@ -53,8 +53,9 @@
|
||||||
})[0];
|
})[0];
|
||||||
|
|
||||||
if (existing) {
|
if (existing) {
|
||||||
|
|
||||||
// Merge the data
|
// Merge the data
|
||||||
existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0, new Date().getTime());
|
existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0);
|
||||||
|
|
||||||
if (server.AccessToken) {
|
if (server.AccessToken) {
|
||||||
existing.AccessToken = server.AccessToken;
|
existing.AccessToken = server.AccessToken;
|
||||||
|
|
13
dashboard-ui/thirdparty/apiclient/serverdiscovery.js
vendored
Normal file
13
dashboard-ui/thirdparty/apiclient/serverdiscovery.js
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
(function (globalScope) {
|
||||||
|
|
||||||
|
globalScope.ServerDiscovery = {
|
||||||
|
|
||||||
|
findServers: function () {
|
||||||
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
var servers = [];
|
||||||
|
deferred.resolveWith(null, [servers]);
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
})(window);
|
Loading…
Add table
Add a link
Reference in a new issue