Skip to content

Commit

Permalink
display public user list
Browse files Browse the repository at this point in the history
  • Loading branch information
LukePulverenti committed Feb 17, 2015
1 parent 42f3427 commit fe6f023
Show file tree
Hide file tree
Showing 7 changed files with 433 additions and 346 deletions.
53 changes: 50 additions & 3 deletions app/common/scripts/apiclient/connectionmanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,24 @@
return apiClient;
}

self.getOrCreateApiClient = function (serverId) {

logger.log('getOrCreateApiClient id:' + serverId);
var apiClient = self.getApiClient(serverId);

if (apiClient) {
return apiClient;
}

var credentials = credentialProvider.credentials();
var server = credentials.servers.filter(function (s) {
return stringEqualsIgnoreCase(s.Id, serverId);

})[0];

return getOrAddApiClient(server, server.LastConnectionMode);
};

function onAuthenticated(apiClient, result, options, saveCredentials) {

var server = apiClient.serverInfo;
Expand Down Expand Up @@ -592,21 +610,43 @@
function findServers() {

var deferred = DeferredBuilder.Deferred();
ServerDiscovery.findServers().done(function (foundServers) {
ServerDiscovery.findServers(2000).done(function (foundServers) {

var servers = foundServers.map(function (foundServer) {

return {
Id: foundServer.Id,
LocalAddress: foundServer.Address,
Name: foundServer.Name
Name: foundServer.Name,
ManualAddress: convertEndpointAddressToManualAddress(foundServer)
};
});
deferred.resolveWith(null, [servers]);
});
return deferred.promise();
}

function convertEndpointAddressToManualAddress(info) {

if (info.Address && info.EndpointAddress) {
var address = info.EndpointAddress.split(":")[0];

// Determine the port, if any
var parts = info.Address.split(":");
if (parts.length > 1) {
var portString = parts[parts.length - 1];

if (!isNaN(parseInt(portString))) {
address += ":" + portString;
}
}

return normalizeAddress(address);
}

return null;
}

self.connect = function () {

logger.log('Begin connect');
Expand Down Expand Up @@ -876,12 +916,19 @@
}
};

self.connectToAddress = function (address) {
function normalizeAddress(address) {

if (address.toLowerCase().indexOf('http') != 0) {
address = "http://" + address;
}

return address;
}

self.connectToAddress = function (address) {

address = normalizeAddress(address);

var deferred = DeferredBuilder.Deferred();

tryConnect(address, 15000).done(function (publicInfo) {
Expand Down
135 changes: 74 additions & 61 deletions app/common/scripts/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,75 +7,88 @@
self.appName = "Media Browser";
self.appVersion = "3";

self.capabilities = function() {
self.capabilities = function () {

return {

};
};

self.connectionManager = function() {

var credentialProvider = new MediaBrowser.CredentialProvider();
self.connectionManager = function () {

var manager = new MediaBrowser.ConnectionManager(Logger, credentialProvider, self.appName, self.appVersion, "deviceName", "deviceId", self.capabilities());

return manager;
};

self.setBackgroundImage = function(url) {
steroids.view.setBackgroundImage(url);
self.addClass(document.body, 'clearBody');
};

self.clearBackgroundImage = function() {
steroids.view.setBackgroundImage(null);
self.removeClass(document.body, 'clearBody');
};

self.addClass = function(elem, name) {

var css = ' ' + (elem.className || '') + ' ';

if (css.indexOf(' ' + name + ' ') == -1) {
elem.className = (css + name).trim();
var deferred = DeferredBuilder.Deferred();

if (self.connectionManagerInstance){
deferred.resolveWith(null, [self.connectionManagerInstance]);
}
else {
supersonic.device.ready.then(function () {
var credentialProvider = new MediaBrowser.CredentialProvider();
var deviceName = device.model;
var deviceId = device.uuid;

self.connectionManagerInstance = new MediaBrowser.ConnectionManager(Logger, credentialProvider, self.appName, self.appVersion, deviceName, deviceId, self.capabilities());

deferred.resolveWith(null, [self.connectionManagerInstance]);
});
}
};

self.removeClass = function(elem, name) {

var css = ' ' + (elem.className || '') + ' ';
elem.className = css.replace(' ' + name + ' ', '').trim();
};

self.navigateToServerSelection = function() {

supersonic.ui.layers.push(new supersonic.ui.View("example#selectserver"), {
animate: true
});
};

self.navigateToConnectSignIn = function() {

supersonic.ui.layers.push(new supersonic.ui.View("example#connectsignin"), {
animate: true
});
};

self.handleServerSignInResult = function(result) {

var server = result.Servers[0];

console.log('handleServerSignInResult');
console.log('ServerId: ' + server.Id);
supersonic.ui.layers.push(new supersonic.ui.View("example#serversignin?id=" + server.Id), {
animate: true
});
};

self.handleSignedInResult = function(result) {

};

return deferred.promise();
};

self.setBackgroundImage = function (url) {
steroids.view.setBackgroundImage(url);
self.addClass(document.body, 'clearBody');
};

self.clearBackgroundImage = function () {
steroids.view.setBackgroundImage(null);
self.removeClass(document.body, 'clearBody');
};

self.addClass = function (elem, name) {

var css = ' ' + (elem.className || '') + ' ';

if (css.indexOf(' ' + name + ' ') == -1) {
elem.className = (css + name).trim();
}
};

self.removeClass = function (elem, name) {

var css = ' ' + (elem.className || '') + ' ';
elem.className = css.replace(' ' + name + ' ', '').trim();
};

self.navigateToServerSelection = function () {

supersonic.ui.layers.push(new supersonic.ui.View("example#selectserver"), {
animate: true
});
};

self.navigateToConnectSignIn = function () {

supersonic.ui.layers.push(new supersonic.ui.View("example#connectsignin"), {
animate: true
});
};

self.handleServerSignInResult = function (result) {

var server = result.Servers[0];

console.log('handleServerSignInResult');
console.log('ServerId: ' + server.Id);
supersonic.ui.layers.push(new supersonic.ui.View("example#serversignin?serverid=" + server.Id), {
animate: true
});
};

self.handleSignedInResult = function (result) {

};

return self;
}();
Expand Down
68 changes: 35 additions & 33 deletions app/example/scripts/ConnectSignInController.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,45 +9,47 @@ angular
steroids.view.displayLoading();

steroids.logger.log('Calling App.connectionManager');
var connectionManager = App.connectionManager();
App.connectionManager().done(function (connectionManager) {

steroids.logger.log('Calling connectionManager.connectToServer');
connectionManager.loginToConnect(username, password).done(function () {

steroids.logger.log('Calling connectionManager.connectToServer');
connectionManager.loginToConnect(username, password).done(function () {
steroids.logger.log('Connect authentication succeeded');

connectionManager.connect().done(function (result) {

steroids.logger.log('Connect authentication succeeded');
steroids.logger.log('result.State: ' + result.State);
steroids.view.removeLoading();

switch (result.State) {

case MediaBrowser.ConnectionState.ServerSelection:
App.navigateToServerSelection();
break;
case MediaBrowser.ConnectionState.ServerSignIn:
App.handleServerSignInResult(result);
break;
case MediaBrowser.ConnectionState.SignedIn:
App.handleSignedInResult(result);
break;
default:
steroids.logger.log('Unhandled ConnectionState');
break;
}
});

}).fail(function(){

connectionManager.connect().done(function (result) {

steroids.logger.log('result.State: ' + result.State);
steroids.logger.log('Connect authentication failed');
steroids.view.removeLoading();

supersonic.ui.dialog.alert("Sign In Error", {
message: "Invalid username or password. Please try again."

switch (result.State) {

case MediaBrowser.ConnectionState.ServerSelection:
App.navigateToServerSelection();
break;
case MediaBrowser.ConnectionState.ServerSignIn:
App.handleServerSignInResult(result);
break;
case MediaBrowser.ConnectionState.SignedIn:
App.handleSignedInResult(result);
break;
default:
steroids.logger.log('Unhandled ConnectionState');
break;
}
});

}).fail(function(){
});
});

steroids.logger.log('Connect authentication failed');
steroids.view.removeLoading();

supersonic.ui.dialog.alert("Sign In Error", {
message: "Invalid username or password. Please try again."

});
});
});
}

$scope.login = function() {
Expand Down
Loading

0 comments on commit fe6f023

Please sign in to comment.